活動的生命週期整理
Android中的活動是可以層疊的。
Android 是使用任務(Task)來管理活動的,一個任務就是一組存放在棧裡的活動 的集合,這個棧也被稱作返回棧(Back Stack)。棧是一種後進先出的資料結構,在預設情況 下,每當我們啟動了一個新的活動,它會在返回棧中入棧,並處於棧頂的位置。而每當我們 按下 Back 鍵或呼叫 finish()方法去銷燬一個活動時,處於棧頂的活動會出棧,這時前一個入 棧的活動就會重新處於棧頂的位置。系統總是會顯示處於棧頂的活動給使用者。
Activity類中定義了7個回撥方法,覆蓋了活動生命週期的每一個環節。
onCreate()它在活動第一次被建立的時候呼叫,在這個方法中完成活動的初始化操作,比如載入佈局、繫結事件等。
onStart()這個方法在活動由不可見變為可見的時候呼叫。
onResume()這個方法在活動準備好和使用者進行互動的時候呼叫。此時的活動一定位於返回棧的棧頂,並且處於執行狀態。
onPause()這個方法在系統準備去啟動活動恢復另一個活動的時候呼叫。我們通常會在這個方法中將一些消耗CPU的資源釋放掉,以及儲存一些關鍵資料,但這個方法的執行速度一定要快,不然會影響到新的棧頂活動的使用
onStop()這個方法在活動完全不可見的時候呼叫。它和onPause()方法的主要區別在於,如果啟動的新活動是一個對話方塊式的活動,那麼onPause()方法會得到執行,而onStop()方法並不會執行。onDestory()。這個方法在活動被銷燬之前呼叫,之後活動的狀態將變為銷燬狀態。onRestart()。這個方法在活動由停止狀態變為執行狀態之前呼叫,也就是活動被重新啟動了。
以下轉載自
作者:qq_34389371
來源:CSDN
原文:https://blog.csdn.net/qq_34389371/article/details/79702036
活動的啟動模式啟動模式一共有4種,分別是standard、singleTop、singleTask和singleInstance,可以在AndroidManifest.xml中通過給<activity>標籤指定android:launchMode屬性來選擇啟動模式。1.standard是活動預設的啟動模式,每當啟動一個新的活動,它就會在返回棧中入棧,並處於棧頂的位置。對於使用standard模式的活動,系統不會在乎這個活動是否已經在返回棧中存在,每次啟動都會建立一個該活動的一個新的例項。
2.singleTop
在啟動活動時如果發現返回棧的棧頂已經是該活動,則認為可以直接使用它,不會再建立新的活動例項。若mainActivty並未處於棧頂位置時,這時再啟動MainActivity,還是會建立新的例項的。
3.singleTask
每次啟動該活動時系統首先會在返回棧中檢查是否存在該活動的例項,如果發現已經存在則直使用該例項,並把在這個活動之上的所有活動統統出棧,如果沒有發現就會建立一個新的活動例項。
4.singleInstancesingleInstance模式的活動會啟動一個新的返回棧來管理這個活動,假設我們的程式中有一個活動是允許其他程式呼叫的,如果我們想實現其他程式和我們的程式可以共享這個活動的例項,使用前面三種啟動模式肯定是做不到的,因為每個應用程式都有自己的返回棧,同一個活動在不同的返回棧中入棧必然是建立了新的例項。而使用singleInstance模式就可以解決這個問題,在這種模式下會有一個單獨的返回棧來管理這個活動,不管是哪個應用程式來訪問這個活動,都共用的同一個返回棧,也就解決了共享活動例項的問題。
---------------------