如果未调用setRetainInstance(true),是否会破坏片段?

时间:2019-06-08 14:41:01

标签: android android-fragments

我正在接受Google进行的高级android开发培训。这是link。我碰到了这个:Added a static fragment in xml

在旋转设备时,选定的单选按钮的状态将保留,如下所示:landscape mode

不使用setRetainInstance(true)如何保留片段的状态?片段是否不应该与活动的onDestroy()方法一起销毁?如果保留它而不显式调用setRetainInstance(true),那么使用该方法有什么意义?我对这两个概念感到困惑。有人可以阐明这一点吗?

1 个答案:

答案 0 :(得分:2)

  

不使用setRetainInstance(true)如何保留片段的状态?

小部件的明显用户可变状态通常会自动进入保存的实例状态Bundle中。其中包括诸如EditText小部件中的文本以及CompoundButton实现的检查状态,例如RadioButton

  

该片段是否应该与活动的onDestroy()方法一起销毁?

是的

  

如果保留它而不显式调用setRetainInstance(true),那么使用该方法有什么意义?

在现代Android应用程序开发中,您将不使用它,而是使用ViewModel系统。它在幕后使用setRetainInstance(true)

更一般地说,保留片段的目的是保留状态 other ,而不是保持窗口小部件的用户可变状态。例如,您可能具有一些属性,这些属性引用了要在配置更改期间保留的业务对象(例如发票,客户)。