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很經(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ù)。。。