3 回答

TA貢獻1851條經(jīng)驗 獲得超3個贊
您作為開發(fā)人員如何使用此功能
致電setRetainInstance(true)
。我通常在onCreateView()
或onActivityCreated()
中使用它。
為什么它使事情變得更容易?
它往往比onRetainNonConfigurationInstance()
處理跨配置更改的數(shù)據(jù)保留(例如,將設(shè)備從縱向旋轉(zhuǎn)到橫向)更簡單。非保留的片段會在配置更改時被銷毀并重新創(chuàng)建;保留的片段不是。因此,那些保留的片段保存的任何數(shù)據(jù)都可用于配置后更改活動。

TA貢獻1833條經(jīng)驗 獲得超4個贊
這對于保持套接字等長期運行的資源的開放非常有幫助。有一個沒有UI的片段,其中包含對藍牙套接字的引用,當用戶翻轉(zhuǎn)手機時,您不必擔心重新連接它們。
在保留對加載時間很長的資源(如位圖或服務(wù)器數(shù)據(jù))的引用時也很方便。加載一次,將其保留在保留的片段中,當重新加載活動時,它仍然存在,而您不必重建它。

TA貢獻1893條經(jīng)驗 獲得超10個贊
很晚才添加了此答案,但我認為這樣可以使事情更清晰。跟我說。當setRetainInstance為:
假
片段在配置更改時重新創(chuàng)建。NEW INSTANCE已創(chuàng)建。
在配置更改時將調(diào)用所有生命周期方法,包括onCreate()和onDestroy()。
真正
片段不會在配置更改時重新創(chuàng)建。使用相同的實例。
在配置更改,APART FROM onCreate()和onDestroy()上調(diào)用所有生命周期方法。
將實例添加到Backstack后,保留實例將不起作用。
不要忘記,以上內(nèi)容適用于DialogFragments和Fragments。
- 3 回答
- 0 關(guān)注
- 903 瀏覽
添加回答
舉報