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 употребувајќи го овој метод:
Intent intent = new Intent(this, SecondActivity.class); startActivity(intent);
Можете исто така да вршите дејства како што се пренесување на податоци од еден 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()
функција, датотеката за изглед, и побарувачки код.
public class MainActivity extends Activity { // Unique request code for each use case private static final int REQUEST_CODE_EXAMPLE = 0x9345; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
Во вашата onCreate()
функција, ќе креирате нов Intent објект за да го започнете второто Activity.
Кога ќе бидете спремни да го започнете второто Activity, да речеме како одговор на притискање на копче, ќе ја повикате startActivityForResult()
, која ќе го пренесе новокреираниот Intent и побарувачкиот код.
// Create a new instance of Intent to start SecondActivity final Intent intent = new Intent(this, SecondActivity.class); // This starts SecondActivity with the request code startActivityForResult(intent, REQUEST_CODE_EXAMPLE);
Сепак, во вашиот MainActivity
, треба да се справите со резултатите од Activity објектот. Ова го правите со имплементирање на onActivityResult()
функцијата. Ова е начинот на коишто ќе го добиете резултатот од другиот Activity објект.
Еве како треба да изгледа:
// onActivityResult only get called // when the other Activity previously started using startActivityForResult @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); // First we need to check if the requestCode matches the one we used. if(requestCode == REQUEST_CODE_EXAMPLE) { // The resultCode is set by the SecondActivity // By convention RESULT_OK means that whatever // SecondActivity did was executed successfully if(resultCode == Activity.RESULT_OK) { // Get the result from the returned Intent final String result = data.getStringExtra(SecondActivity.EXTRA_DATA); // Use the data - in this case, display it in a Toast. Toast.makeText(this, "Result: " + result, Toast.LENGTH_LONG).show(); } else { // setResult wasn't successfully executed by SecondActivity // Due to some error or flow of control. No data to retrieve. } } }
Сега креирајте го вашиот SecondActivity
кој би требало да изгледа како кодот прикажан долу.
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_detail); final Button button = (Button) findViewById(R.id.button); // When this button is clicked we want to return a result button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { // Create a new Intent object as container for the result final Intent data = new Intent(); // Add the required data to be returned to the MainActivity data.putExtra(EXTRA_DATA, "Some interesting data!"); // Set the resultCode as Activity.RESULT_OK to // indicate a success and attach the Intent // which contains our result data setResult(Activity.RESULT_OK, data); // With finish() we close the SecondActivity to // return back to MainActivity finish(); } }); }
Завршување на еден 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 во неговиот животен циклус.
Ви благодариме за читањето, и додека сте тука, проверете некој од нашите други објави за тоа како да програмирате Андроид апликации.
Subscribe below and we’ll send you a weekly email summary of all new Code tutorials. Never miss out on learning about the next big thing.
Update me weeklyEnvato Tuts+ tutorials are translated into other languages by our community members—you can be involved too!
Translate this post