1. 程式人生 > >活動的生命周期整理

活動的生命周期整理

chmod 對話 net 事件 activit 共享 可見 launch pause

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模式就可以解決這個問題,在這種模式下會有一個單獨的返回棧來管理這個活動,不管是哪個應用程序來訪問這個活動,都共用的同一個返回棧,也就解決了共享活動實例的問題。

技術分享圖片

---------------------

活動的生命周期整理