Students Save 30%! Learn & create with unlimited courses & creative assets Students Save 30%! Save Now
Advertisement
  1. Code
  2. Android SDK
Code

Што е животен циклус на Андроид Activity?

by
Difficulty:BeginnerLength:MediumLanguages:

Macedonian (Македонски јазик) translation by Sara Kostova (you can also view the original English article)

Во мојата претходна објава, научивте дека Intent објектите ни овозможуваат да пратиме пораки од една Андроид компонента до друга. Еден многу важен вид на компонента е Activity.

Activity објектите се основен дел од развивањето на Андроид апликации. И невозможно е да се разберат Activity објектите без да се разбери нивниот животен циклус. Во ова објава, ќе научете се за животниот век на Activity.

Животен век на Activity

Activity е единствен екран во Андроид. Тој е како еден прозорец во една компјутерска апликација или рамка во една Јава програма. Activity ви дозволува да ги поставите сите ваши компоненти или додатоци од КИ (Кориснички Интерфејс) заедно во екранот.

Важно е да се разбере дека едно Activity има животен век: тоа значи дека тој може да биде во една од неколку различни состојби, зависно од тоа што се случува со апликацијата и со корисничката интеракција.

Функции на животниот циклус:

Ајде да погледнеме подобро во животниот век на едно Андроид Activity. Секогаш кога Activity објектот ќе ја промени состојбата, една од следните функции на животниот циклус ќе биде повикана во Activity класата.

onCreate(): Oва функција е повикана кога Activity објектот по прв пат ќе биде иницијализиран. Треба да ја имплементирате оваа функција со цел да направите било каква специфична инициализација на вашиот Activity објект.

onStart(): Ова функција е повикана кога Activity објектот по прв пат ќе стане видлив за корисникот т.е.  Activity објектот се спрема да дојде во преден план за да стане интерактивен. Откако ова функција ќе заврши, ќе биде повикана.onResume() функцијата.

onResume() Кога Activity објектот оди во ова состојба, тој почнува да има интеракции со корисникот. Activity објектот продолжува во оваа состојба се додека не се случи нешто што ќе го одземе фокусот од апликацијата или од Activity објектот (како на пример дојдовен повик). Кога ова ќе се случи, се повикува onPause() функцијата.

onPause(): ова функција се користи за паузирање на сите активности кои не треба да се случуваат додека Activity објектот е во паузирана состојба. Повикот до ова функција укажува дека корисникот ја напушта апликацијата. На пример, во една апликација за слушање музика, дојдовен повик ќе предизвика апликацијата да премине во паузирана состојба. Ова треба да ја постави музиката што моментално свири на безчуен режим или да ја паузира. Кога корисникот ќе се врати во апликацијата, onResume() функцијата ќе биде повикана.

onStop(): Оваа функција е повикана кога Activity објектот не е веќе видлив во апликацијата. Тоа може да се случи, на пример, кога ново Activity ќе биде вчитано кое ќе го превземе целиот екран на уредот. Се вели дека Activity објектот е во стопирана состојба кога ова функција ќе биде повикана. Во ова состојба, системот или ја повикува onRestart() за да ја врати интерактивноста со Activity објектот или ја повикува onDestroy() функцијата за да го уништи Activity објектот.

onDestroy(): се повикува пред Activity објектот да биде уништен. Системот ја повикува оваа функција кога корисникот го исклучува Activity објектот или затоа што системот привремено го уништува процесот кои го содржи Activity објектот за да заштеди меморија. Во оваа функција, треба да бидете сигурни дека ќе ослободите било какви ресурси кој вашиот Activity ги има креирано, или вашата апликација ќе има расцепување на меморија!

onRestart(): Ова се повикува кога Activity објектот се рестартира откако претходно бил во стопирана состојба

Започнување на еден Activity објект

Повеќето на корисничките интеракции со апликацијата предизвикуваат активниот Activity да се менува. Значи една апликација преминува во повеќе Activity објекти многу пати во текот на својот живот.

Кога еден Activity објект треба да започне друг Activity објект неопходно е тие да бидат поврзани меѓу себе. За да започнете едно Activity, користите startActivity() или startActivityForResult(). Во секој случај треба да додадете Intent објект.

Започнување на Activity без очекувани резултати

startActivity() се употребува доколку не е потребно новозапочнатиот Activity да врати резултат.

Следниот фрагмент на код покажува како да се започне друг Activity употребувајќи го овој метод:

Можете исто така да вршите дејства како што се пренесување на податоци од еден Activity објект на друг. Во овој случај, вашиот тековен Activity (повикувачкиот Activity) сака да пренесе податоци на целниот Activity. Ова е кога Intent објектите се корисни. За да научите повеќе како да користите Intent објекти за да започнете едно Activity, проверете ја мојата претходна статија.

Започнување на Activity со очекувани резултати

startActivityForResult() се употребува кога започнуваме друго Activity и очекуваме да добијеме повратни податоци од новозапочнатиот Activity, користете ја оваа функција кога сакате да добиете повратен резултат од целниот Activity до повикувачкиот Activity, на пр. ако целниот Activity собира некој информации за корисникот во модален дијалог.

Резултатот од Activity објектот го добивате во  onActivityResult(int requestCode, int resultCode, Intent data) функцијата. Овој резултат ќе биде вратен како Intent објект.

Пример за започнување на еден Activity

Еве еден пример за да покажиме како работи започнувањето на еден Activity објект.

Прво, го креирате вашиот MainActivity со вашата onCreate() функција, датотеката за изглед, и побарувачки код.

Во вашата onCreate() функција, ќе креирате нов Intent објект за да го започнете второто Activity.

Кога ќе бидете спремни да го започнете второто Activity, да речеме како одговор на притискање на копче, ќе ја повикате startActivityForResult(), која ќе го пренесе новокреираниот Intent и побарувачкиот код.

Сепак, во вашиот MainActivity, треба да се справите со резултатите од Activity објектот. Ова го правите со имплементирање на onActivityResult() функцијата. Ова е начинот на коишто ќе го добиете резултатот од другиот Activity објект.

Еве како треба да изгледа:

Сега креирајте го вашиот SecondActivity кој би требало да изгледа како кодот прикажан долу.

Завршување на еден Activity

Пред да се заврши едно Activity, соодветните функции на животен циклус ќе бидат повикани.

onPause() функцијата треба да ги прекине сите слушатели и надградби на КИ исто така.onStop() функцијата треба да ги зачува податоците од апликацијата. На крај, onDestroy() функцијата ќе ги ослободи сите распределени ресурси од Activity објектот.

Кога корисникот ќе се врати на апликација која што е завршена од системот, onResume() функцијата е повикана. Врз основ на зачуваните податоци, таа може повторно да ги регистрира слушателите, исто така и да предизвика надградба на КИ.

Состојба на инстанца од Activity објект

Еден Activity објект треба да има начин како да ги зачува вредните состојби, и кориснички податоци коишто ги има добиено. Овие податоци можат да се добиат од кориснички внес или да бидат креирани додека Activity објектот не беше поставен на екран.

На пример, промена на ореинтацијата на уредот може да предизвика Activity објектот да биде уништен и повторно креиран. Во таков случај, треба да бидете сигурни дека сте ги зачувале сите состојби на Activity објектот пред тој да биде уништен, и да ги вчитате повторно кога тој ќе биде повторно креиран. Во спротивно, сите податоци кој Activity објектот ги содржи ќе бидат целосно изгубени. 

За да се зачува состојба на Activity објект, треба да се презапише onSaveInstanceState() функцијата. На ова функција и се препушта Bundle објект како параметар. Bundle објектот може да содржи String објекти, примитивни типови на податоци, или објекти. Во оваа функција, едноставно додадете важни податоци во Bundle објектот. Овој Bundle објект подоцна ќе биде вратен на Activity објектот за да може да ја вратите сотојбата на Activity објектот.

За да ја извадиме зачуваната сотојба од Bundle објектот и да вратиме, треба да ја имплементираме onRestoreInstanceState() функцијата. Ова функција ќе биде повикана измеѓу onStart() и onResume()функциите на животен циклус

Во следните статии ќе погледнеме подлабоко во состојбите на инстанца од Activity објект.

Заклучок

Откако ќе го прочитате овај пост, ќе имате добро разбирање за тоа како работи животниот циклус на еден Activity објект. Исто така научивте дека има два начини за да се започне еден Activity, како и добивте некој совети за тоа како да ракувате со сотојбата на едно Activity во неговиот животен циклус.

Ви благодариме за читањето, и додека сте тука, проверете некој од нашите други објави за тоа како да програмирате Андроид апликации.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.