活動的生命週期 生命週期 手機特性是隨時可以切換到其他應用,結束

Download Report

Transcript 活動的生命週期 生命週期 手機特性是隨時可以切換到其他應用,結束

活動的生命週期
生命週期
• 手機特性是隨時可以切換到其他應用,結
束後回到離開時的狀態。
• 多工作業系統可以同時執行多個程式,但
會多耗費系統記憶體。
• 同時執行的程式過多,或關閉的程式沒有
正確釋放記憶體,執行速度會越來越慢,
甚至不穩定。
• Android引進Life Cycle
行程
• Process:應用程式(Activity)執行的狀態
• Android框架會維護唯一的Activity歷史記錄
堆疊,從旁觀察每個Process
• 系統平台會依據系統的記憶體狀況,與
Activity的使用狀態,來管理記憶體的使用。
• Activity類別除了負責運行程式流程,與操
作介面元件外,還提供了開發者控制
Process生命週期的函式。(ex. onCreate)
生命週期
• Android應用程式生命週期由Android框架管理,
不是由應用程式直接控制。
• 當系統記憶體不足時,會依照優先順序自動進
行Process回收。使用者或開發者都無法確定應
用程式何時會被回收。
• Activity切換時,原本的Activity會經過一連串的
狀態改變,開發者可以在程式中加上各狀態相
對應的流程。
• Activity需要在各狀態點(週期點)上負責保管狀
態、恢復狀態、傳送資料等工作。
Activity狀態
• 四種狀態:Active(活動)、Paused(暫停)、
Stopped(停止)、Dead(已回收或未啟動)
• Active:
– 啟動應用程式或Activity後,運行中的狀態
– 同一時刻只會有一個Activity處於Active(Running)狀
態
• Paused:
– 目前運行中的螢幕畫面暫時暗下來,退到背景畫面
的狀態
– 處於此狀態時,使用者無法與原Activity互動
Activity狀態
• Stopped:
– 其他Activity正在執行,此Activity交出螢幕控制
權,處於不再動作的狀態
– 長按HOME,可以叫出所有處於Stopped狀態程
式列表
• Dead:
– Activity尚未被啟動、已經被手動終止(程式呼叫
finish函式)或被系統回收(記憶體不足時)的狀態
記憶體不足
• 先回收與其他Activity或Service/Intent
Receiver無關的Process(優先回收獨立的
Activity)
• 再回收處於Stopped狀態的其他類型(在背景
等待)Activity。最久沒有使用的優先回收
(LRU)
• 回收Service行程
• 關掉可見的Activity
• 關閉目前的Activity
觀察
• 可以利用Log記錄訊息,觀察模擬器運行時
Activity所處的狀態
Activity運作流程
狀態分類
• 資源分配
– Create
– Destroy
• 可見與不可見
– Start
– ReStart
– Stop
• 螢幕控制權
– Resume
– Pause
啓動
呼叫另一Activity
返回原Activity
退出結束
回收再啓動
保存狀態
• 為了讓再次被建立出來的Activity看起來跟
原本的一樣,在切換時必須保留資料
• 在Activity運行到onPause或onStop狀態時保
存資料
• onCreate時將資料讀出來
儲存資料(Preference)
資料儲存
• Android系統如何儲存設定資料?
– 可以使用檔案
– 偏好設定(preference)
– 儲存到資料庫
– 儲存到網路
使用偏好設定
儲存偏好設定