【发布时间】:2012-06-26 06:52:06
【问题描述】:
从文档开始:
public void setRetainInstance(布尔保留)
控制是否在 Activity 重新创建(例如配置更改)期间保留片段实例。这只能与不在后台堆栈中的片段一起使用。如果设置,在重新创建活动时片段生命周期将略有不同:
- onDestroy() 将不会被调用(但 onDetach() 仍会被调用,因为片段正在与其当前活动分离)。
- onCreate(Bundle) 不会被调用,因为片段没有被重新创建。
- onAttach(Activity) 和 onActivityCreated(Bundle) 仍将被调用。
我有一些问题:
-
片段是否也保留其视图,还是会在配置更改时重新创建? “保留”到底是什么意思?
-
当用户离开activity时,fragment会被销毁吗?
-
为什么它不适用于后堆栈上的片段?
-
在哪些用例中使用此方法有意义?
【问题讨论】:
-
类似的问题有很好的信息:Why use Fragment#setRetainInstance(boolean)?
-
多窗口(API 24)?你在这里读到的任何东西都是不可靠的。我看到
Fragment.onDestroy()intermittently 调用了相应的片段中的字段无效,据称受setRetainInstance(true)保护