1. 程式人生 > >Android筆記:Activity的生命週期以及啟動模式

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 都會進入同一個應用中。

活用這幾種啟動模式很重要