2023年9月21日 星期四

【Android】 生命週期 Lifecycle


Fragment Lifecycle



Activity Lifecycle



旋轉螢幕

在裝置狀態改變發生時(比如要調整版面、語言等),使系統解決變更的最簡單方式就是完全關閉。
在旋轉螢幕時,Activity 會被 destory,然後再被 create 、 start 。暫存的資料會遺失。

使用 onSaveInstanceState() 儲存套件資料

您可以將 onSaveInstanceState() 呼叫視為安全防護措施;此呼叫會在活動離開前景時,將少量資訊儲存至套件。系統會在此時儲存資料,因為若等待直到應用程式關閉,系統可能會有資源壓力。
有時在背景的應用程式會被系統關閉,在使用者返回時才重新啟動,看似沒有關閉過,實則可能使資料遺失。因此,需使用 SavedState 確保資料不會遺失。
使用方式如下 :

保存 :

override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)
    outState.putBoolean(IS_EDITING_KEY, isEditing)
    outState.putString(RANDOM_GOOD_DEED_KEY, randomGoodDeed)
}

取回 :

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    isEditing = savedInstanceState?.getBoolean(IS_EDITING_KEY, false)
    randomGoodDeed = savedInstanceState?.getString(RANDOM_GOOD_DEED_KEY)
            ?: viewModel.generateRandomGoodDeed()
}


參考資料


0 comments:

張貼留言