Android四大組件——Activity的生命周期和啟動(dòng)模式

Activity是Android提供給開發(fā)者的四大組件之一,主要作用是展示視圖、與用戶進(jìn)行交互。當(dāng)用戶初次啟動(dòng)Activity時(shí)、當(dāng)用戶執(zhí)行跳轉(zhuǎn)到另外一個(gè)Activity或切換到其他應(yīng)用時(shí),Android都會(huì)調(diào)用Activity的一系列生命周期方法,開發(fā)者可以在相應(yīng)的生命周期方法處理一些必要的操作。

生命周期

Activity生命周期圖

上圖就是Activity很經(jīng)典的生命周期圖示,我們可以把Activity分成三組狀態(tài)

  • onCreate和onDestroy
  • onStart、onRestart和onStop
  • onResume和onPause

Activity只能在其中三種狀態(tài)之下存在很長(zhǎng)的一段時(shí)間:

  • onResume(),此時(shí)Activity在前臺(tái)并且可以和用戶交互
  • onPasue(),此時(shí)Activity處于暫停狀態(tài),Activity被在前臺(tái)中處于半透明狀態(tài)或者未覆蓋整個(gè)屏幕的另一個(gè)Activity部分阻擋
  • onStop(),此時(shí)Activity處于停止?fàn)顟B(tài),Activity完全隱藏對(duì)用戶不可見

其他幾個(gè)狀態(tài)都是短暫的狀態(tài),系統(tǒng)會(huì)調(diào)用下一個(gè)生命周期方法來快速轉(zhuǎn)換到下一個(gè)狀態(tài)

onCreate和onDestroy

當(dāng)用戶點(diǎn)擊應(yīng)用圖標(biāo)后,系統(tǒng)會(huì)調(diào)用app中AndroidManifest.xml文件中被聲明為”launcher” (or “main”) activity中的onCreate()方法。這個(gè)Activity被用來當(dāng)作程序的主要進(jìn)入點(diǎn)。

onCreate()方法是Activity生命周期第一個(gè)回調(diào)函數(shù),此時(shí)我們可以在onCreate()方法中初始化一些UI組件,以及實(shí)例化一些成員變量,盡量少在onCreate()方法中做太多太多事情,避免Activity啟動(dòng)很久后都還看不到界面,一旦onCreate操作完成,系統(tǒng)會(huì)馬上調(diào)用onStart()方法

Activity生命周期最后一個(gè)回調(diào)函數(shù)是onDestroy(),當(dāng)Activity處在后臺(tái)并且系統(tǒng)內(nèi)存不足或者我們主動(dòng)調(diào)用finish()方法關(guān)閉Activity時(shí),系統(tǒng)會(huì)調(diào)用onDestroy()方法(調(diào)用finish()方法關(guān)閉Activity時(shí),系統(tǒng)直接調(diào)用onDestroy()方法,而不會(huì)經(jīng)過onPause和onStop)。我們需要在onDestroy()方法中釋放掉那些可能會(huì)造成內(nèi)存泄漏的資源

onResume和onPause

當(dāng)一個(gè)半透明的Activty阻塞Activty時(shí)(此時(shí)Activty不可交互),系統(tǒng)會(huì)調(diào)用onPause()方法并且這個(gè)Activty會(huì)停留在Paused 狀態(tài),方法中可以停止不應(yīng)該在暫停過程中執(zhí)行的操作,如暫停視頻播放

如果用戶在這個(gè)Activty還是在Paused 狀態(tài)時(shí)回到這個(gè)Activty,系統(tǒng)則會(huì)調(diào)用它的onResume(),系統(tǒng)每次調(diào)用這個(gè)方法時(shí),Activty都處于前臺(tái),包括第一次創(chuàng)建的時(shí)候。所以,應(yīng)該實(shí)現(xiàn)onResume()來初始化那些在onPause方法里面釋放掉的組件,如恢復(fù)用戶的視頻播放進(jìn)度并開始播放

onStart、onRestart和onStop

當(dāng)用戶跳轉(zhuǎn)到下一個(gè)Activity或者是直接按Home鍵返回主界面時(shí),此時(shí)Activity處于對(duì)用戶不可見,系統(tǒng)會(huì)調(diào)用onStop方法并且Activty會(huì)停留在onStop狀態(tài)(不管什么原因?qū)е翧ctivity停止,系統(tǒng)總是會(huì)在onStop()之前調(diào)用onPause()方法),當(dāng)系統(tǒng)內(nèi)存不足時(shí),系統(tǒng)就會(huì)調(diào)用onDestroy(),然后摧毀掉這個(gè)Activity的實(shí)例

當(dāng)Activity從Stop狀態(tài)回到前臺(tái)時(shí),它會(huì)調(diào)用onRestart()。系統(tǒng)再調(diào)用onStart()方法,onStart()方法會(huì)在每次Activity可見時(shí)都會(huì)被調(diào)用。onRestart()方法則是只在Activity從stop狀態(tài)恢復(fù)時(shí)才會(huì)被調(diào)用

未完待續(xù)。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容