系统杀死应用程序后碎片会发生什么?

Den*_*sVA 3 android state fragment

“如果一个活动被暂停或停止,系统可以通过要求它完成或简单地终止其进程来从内存中删除该活动。”。当用户返回到 Activity 时,它会用一个包恢复它的状态。

我的问题是:

在 oncreate 中执行此操作是否重要:

if(savedinstance != null)
{
    fragement = fm.findFragmentByTag("tag");
}
else
{
    fragment = new Fragment();
    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.add(R.id.webViewFrame,fragment,"tag");
    ft.commit()
}
Run Code Online (Sandbox Code Playgroud)

而不仅仅是这个:

    fragment = new Fragment();
    FragmentManager fm = getFragmentManager();
    FragmentTransaction ft = fm.beginTransaction();
    ft.add(R.id.webViewFrame,fragment,"tag");
    ft.commit()
Run Code Online (Sandbox Code Playgroud)

Bob*_*der 5

如果您正确地将您的活动和片段的状态保存在 中onSaveInstanceState(),并且您希望您的活动以它被杀死之前的状态重新创建,您应该使用您发布的第一个代码块。

FragmentManager保存其状态,并重新创建时,恢复片段活动时被打死原持有。它使用片段的保存状态逐步完成构建生命周期事件:创建、创建视图、启动、恢复。

我很确定如果您尝试运行第二个代码块,您会在重新启动后发现您的片段中有两个实例FragmentManager——一个是在第一次创建活动时添加的,另一个是在重新启动后添加的。

为了使这一切正常工作,您必须小心地在onSaveInstanceState()每个方法中保存您的活动和片段的状态,然后在onCreate()测试中savedInstanceState,当不为空时,使用包来恢复您的活动/片段的状态。

这是保存/恢复活动状态的指南。更多信息在这里