3 回答
TA贡献1851条经验 获得超3个赞
您作为开发人员如何使用此功能
致电setRetainInstance(true)
。我通常在onCreateView()
或onActivityCreated()
中使用它。
为什么它使事情变得更容易?
它往往比onRetainNonConfigurationInstance()
处理跨配置更改的数据保留(例如,将设备从纵向旋转到横向)更简单。非保留的片段会在配置更改时被销毁并重新创建;保留的片段不是。因此,那些保留的片段保存的任何数据都可用于配置后更改活动。
TA贡献1833条经验 获得超4个赞
这对于保持套接字等长期运行的资源的开放非常有帮助。有一个没有UI的片段,其中包含对蓝牙套接字的引用,当用户翻转手机时,您不必担心重新连接它们。
在保留对加载时间很长的资源(如位图或服务器数据)的引用时也很方便。加载一次,将其保留在保留的片段中,当重新加载活动时,它仍然存在,而您不必重建它。
TA贡献1893条经验 获得超10个赞
很晚才添加了此答案,但我认为这样可以使事情更清晰。跟我说。当setRetainInstance为:
假
片段在配置更改时重新创建。NEW INSTANCE已创建。
在配置更改时将调用所有生命周期方法,包括onCreate()和onDestroy()。
真正
片段不会在配置更改时重新创建。使用相同的实例。
在配置更改,APART FROM onCreate()和onDestroy()上调用所有生命周期方法。
将实例添加到Backstack后,保留实例将不起作用。
不要忘记,以上内容适用于DialogFragments和Fragments。
- 3 回答
- 0 关注
- 885 浏览
添加回答
举报