Android中的“状态”是什么意思
在android中,我们一直在讲保留活动状态/片段状态,但是我有这个问题,确实是“状态”的意思。例如,假设我具有以下对话框片段Android中的“状态”是什么意思
public class Dialog extends DialogFragment {
private String mMessage;
@Override
public void onCreateView(LayoutInflater inflater,
ViewGroup container,
Bundle savedInstanceState) {
View v = super.onCreateView(inflater, container, savedInstanceState);
((TextView) v.findViewById("message")).setText(mMessage);
}
}
但是在设备旋转过程中不会将“mMessage”保留为成员变量吗?因此,在这种情况下,“mMessage”是否被认为是创建此片段时必须保留并进行参数化的状态?
State的概念来自OOP,而不是来自android,以简化:对象具有状态(数据)和行为(代码)。
片段和活动的工作方式有点不同,如果片段被停止,片段将保留状态,但它们将失去管理它们的活动(除非您保留它)。然而,活动在配置改变时会失去状态。
的文档解释了生命周期,以及如何/时保留片段: https://developer.android.com/guide/components/fragments.html#Lifecycle
你是对有关活动的成员变量,但片段我不认为你是正确的。见https://inthecheesefactory.com/blog/fragment-state-saving-best-practices/en –
你是对的,我太笼统了,我更新了答案。 –
从官方文档提供的示例看来,片段状态可以通过使用以下行'setRetainInstance(true)'保留片段本身的实例来保留。是否仍然有必要将参数放入参数中? –
正确。从配置文档“当Android系统由于配置更改而关闭您的活动时,您标记为保留的活动片段不会被销毁。您可以将这些片段添加到活动中以保留有状态的对象。 Fragment类并声明对有状态对象的引用 2.创建片段时调用setRetainInstance(boolean) 3.将片段添加到活动中 4.使用FragmentManager在活动重新启动时检索片段。 “ – Stuckzilla