onRetainNonConfigurationInstance和getLastNonConfigurationInstance
很多網友可能知道Android橫豎屏切換時會觸發onSaveInstanceState,而還原時會產生 onRestoreInstanceState,但是Android的Activity類還有一個方法名為 onRetainNonConfigurationInstance和getLastNonConfigurationInstance這兩個方法。
?? 我們可以通過? onRetainNonConfigurationInstance 代替 onSaveInstanceState,比如
? @Override
? public Object onRetainNonConfigurationInstance()
?{????
?????? //這里需要保存的內容,在切換時不是bundle了,我們可以直接通過Object來代替
????? return obj;
?}
?在恢復窗口時,我們可以不使用 onRestoreInstanceState,而代替的是 getLastNonConfigurationInstance 方法。我們可以直接在onCreate中使用,比如
? Object?obj = getLastNonConfigurationInstance();???? 最終obj的內容就是上次切換時的內容。
? 這里Android123提醒大家,每次Activity橫豎屏切換時onCreate方法都會被觸發。
轉:http://www.android123.com.cn/androidkaifa/610.html
第二篇:
Android橫豎屏切換時會觸發onSaveInstanceState,而還原時會產生onRestoreInstanceState,但是 Android的Activity類還有一個方法名為onRetainNonConfigurationInstance和 getLastNonConfigurationInstance這兩個方法。
??? 當Device configuration發生改變時,將伴隨Destroying被系統調用。通過這個方法可以像onSaveInstanceState()的方法一 樣保留變化前的Activity State,最大的不同在于這個方法可以返回一個包含有狀態信息的Object,其中甚至可以包含Activity Instance本身。新創建的Activity可以繼承大量來至于Parent Activity State信息。
??? 用這個方法保存Activity State后,通過getLastNonConfigurationInstance()在新的Activity Instance中恢復原有狀態。比如:
在恢復窗口時,我們可以不使用onRestoreInstanceState,而代替的是 getLastNonConfigurationInstance 方法。我們可以直接在onCreate中使用,比如
這個方法最大的好處是:
??? * 當Activity曾經通過某個資源得到一些圖片或者信息,那么當再次恢復后,無需重新通過原始資源地址獲取,可以快速的加載整個Activity狀態信息。
??? * 當Activity包含有許多線程時,在變化后依然可以持有原有線程,無需通過重新創建進程恢復原有狀態。
??? * 當Activity包含某些Connection Instance時,同樣可以在整個變化過程中保持連接狀態。
下邊是需要特別注意的幾點:
??? * onRetainNonConfigurationInstance()在onSaveInstanceState()之后被調用。
??? * 調用順序同樣介于onStop() 和 onDestroy()之間。
總結
以上是生活随笔為你收集整理的onRetainNonConfigurationInstance和getLastNonConfigurationInstance的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【原创】MySQL 返回更新值(RETU
- 下一篇: [转]html5 Canvas画图教程(