Android筆記:Activity的生命週期以及啟動模式
Activity生命週期
activity的生命週期:
onCreate
onStart
onRestart
onResume
onPause
onStop
onDestroy
上一張圖,看起來更有層次感。
一些常見操作下的執行步驟:
1.新起一個頁面(activity)
onCreate()->onStart()->onResume
2.按下手機BACK鍵
onPause()->onStop()->onDestory()
3.按下手機HOME鍵
onPause()->onStop()
再次進入應用頁面
onRestart()->onStart()->onResume()
4.手機鎖屏/當前activity被覆蓋
onPause()
手機解鎖屏/當前actvity的覆蓋狀態解除
onResume()
5.使用者退出當前頁面(activity)
onPause()->onStop()->onDestory()
Activity的啟動模式
在Manifest檔案中會有如下的程式碼,其中launchMode就表示activity的啟動模式。
<span style="font-family:SimSun;"> <activity android:launchMode="singleTop" android:name=".activity.AppDetailActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" /></span>
Activity一共有以下四種launchMode:
1.standard:標準模式,預設載入模式
2.singleTop:task頂單例模式
3.singleTask:task內單例模式
4.singleInstance:全域性單單例模式
1.四大啟動模式的理解
standard:每次啟動一個activity都會建立一個activity並放入任務棧中,這種啟動方式對系統消耗很大,效能不佳。
singleTop:如果當前activity已存在棧內並且在棧頂,則重新使用該例項,否則將建立新的activity例項並將其置於棧頂(包含兩種情況,一種是activity在棧內但不在棧頂,建立新 的activity例項並將其置於棧頂。第二種情況是activity不在棧內,這種情況就很明顯了,將會生成新的例項並置於棧頂)。這裡再多說一句,當activity在棧頂並被重用時,將呼叫onNewIntent()方法,一些更新檢視的操作可以在這邊實現。
singleTask:如果發現所在的activity棧中有對應的activity例項,則使該activity例項之上的其他activity例項全部出瞻,使自己成為棧頂並顯示出來。重複啟用該activity同樣會呼叫onNewIntent()方法。
singleInstance:在一個新棧中建立該Activity的例項,並讓多個應用共享該棧中的該Activity例項。一旦該模式的Activity例項已經存在於某個棧中,任何應用再啟用該Activity時都會重用該棧中的例項( 會呼叫例項的 onNewIntent() )。其效果相當於多個應用共享一個應用,不管誰啟用該 Activity 都會進入同一個應用中。
活用這幾種啟動模式很重要