維護乙個activity 的生命週期非常重要,因為activity 隨時會被系統**掉。
現在手機操作是多工的作業系統,不及時**記憶體會使手機記憶體占用增加,導致系統變慢,甚至不穩定。
為了解決這個問題,android引入了新的機制---生命週期。
activity 的四個狀態:
*active(活動)
*paused(暫停)
*stopped(停止)
*dead(死亡)
active (活動)
"active"狀態是使用者啟動應用程式或activity 後,activity 執行中的狀態。
在android 平台上,同乙個時刻只會有乙個activity 處於活動(active)或執行
(running)狀態。其他的activity 都處於未啟動(dead)、停止(stopped)、或是暫停(pause)
的狀態。
paused (暫停)
"paused"狀態是當activity 暫時暗下來,退到背景畫面的狀態。
當我們使用toast、alertdialog、或是**來了時,都會讓原本執行的activity 退
到背景畫面。新出現的toast、alertdialog 等介面元件蓋住了原來的activity 畫面。
activity 處在"paused"狀態時,使用者無法與原activity 互動。
stopped (停止)
stopped"狀態是有其他activity 正在執行,而這個activity 已經離開螢幕,不再動
作的狀態。
透過長按"home"鈕,可以叫出所有處於"stopped"狀態的應用程式列表。
在"stopped"狀態的activity,還可以透過"notification"來喚醒。"notification"
會在後面章節中解說。
dead (已**或未啟動)
"dead"狀態是activity 尚未被啟動、已經被手動終止,或已經被系統**的狀態。
要手動終止activity,可以在程式中呼叫"finish"函式
1.android用activity stack來管理多個activity,所以呢,同一時刻只會有最頂上的那個activity是處於active或者running狀態。其它的activity都被壓在下面了。
2. 如果非活動的activity仍是可見的(即如果上面壓著的是乙個非全屏的activity或透明的activity),它是處於paused狀態的。在系統記憶體不足的情況下,paused狀態的activity是有可被系統殺掉的。只是不明白,如果它被乾掉了,介面上的顯示又會變成什麼模樣?看來下回有必要研究一下這種情況了。
3.幾個事件的配對可以比較清楚地理解它們的關係。create與destroy配成一對,叫entrie lifetime,在建立時分配資源,則在銷毀時釋放資源;往上一點還有start與stop一對,叫visible lifetime,表達的是可見與非可見這麼乙個過程;最頂上的就是resume和pause這一對了,叫foreground lifetime,表達的了是否處於啟用狀態的過程。
4.因此,我們實現的activity派生類,要過載兩個重要的方法:oncreate()進行初始化操作,onpause()儲存當前操作的結果。
Activity生命週期
oncreate 設定activity所使用的布局檔案 按鈕繫結 等靜態設定操作 onstart 該activity能被我們看到的時候就會呼叫onstart onresume 能夠獲得使用者焦點 onpause 啟動另外乙個activity的時候就會呼叫第乙個activity的該方法 onstop ...
activity生命週期
乙個activity的啟動順序 oncreate onstart onresume 當另乙個activity啟動時 第乙個activity onpause 第二個activity oncreate onstart onresume 第乙個activity onstop 當返回到第乙個activity...
Activity 生命週期
activities 在系統中是以 activity 棧的形式被管理的。當乙個新的 activity 啟動時,它將會被放到棧的頂部並變成 running activity 上乙個activity 會被至於它的下面,在新 activity 存在期間它都不會到前端來。乙個 activity 有四個重要的...