日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

onRetainNonConfigurationInstance和getLastNonConfigurationInstance

發布時間:2024/4/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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中恢復原有狀態。比如:

[java] view plaincopy
  • @Override??
  • public?Object?onRetainNonConfigurationInstance()?{??
  • ????final?MyDataObject?data?=?MyLoadedData();??
  • ????return?data;??
  • }??

  • 在恢復窗口時,我們可以不使用onRestoreInstanceState,而代替的是 getLastNonConfigurationInstance 方法。我們可以直接在onCreate中使用,比如

    [java] view plaincopy
  • @Override??
  • public?void?onCreate(Bundle?savedInstanceState)?{??
  • ????super.onCreate(savedInstanceState);??
  • ????setContentView(R.layout.main);??
  • ??
  • ????final?MyDataObject?data?=?(MyDataObject)?getLastNonConfigurationInstance();??
  • ????if?(data?==?null)?{??
  • ????????data?=?loadMyData();??
  • ????}??
  • ????...??
  • }??


  • 這個方法最大的好處是:
    ??? * 當Activity曾經通過某個資源得到一些圖片或者信息,那么當再次恢復后,無需重新通過原始資源地址獲取,可以快速的加載整個Activity狀態信息。
    ??? * 當Activity包含有許多線程時,在變化后依然可以持有原有線程,無需通過重新創建進程恢復原有狀態。
    ??? * 當Activity包含某些Connection Instance時,同樣可以在整個變化過程中保持連接狀態。

    下邊是需要特別注意的幾點:
    ??? * onRetainNonConfigurationInstance()在onSaveInstanceState()之后被調用。

    ??? * 調用順序同樣介于onStop() 和 onDestroy()之間。


    總結

    以上是生活随笔為你收集整理的onRetainNonConfigurationInstance和getLastNonConfigurationInstance的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。