onSaveInstanceState - 我什么时候可以确定它被调用?

时间:2014-03-11 09:22:28

标签: android android-fragments android-activity fragment

我有一个活动,我有一个片段堆栈,有时,这个堆栈丢失了......虽然我保存并恢复它...

我知道以下事项:

  • onSaveInstanceState 未被调用:

    a)如果用户导航回来,这是有道理的......

    b)活动是否完成

  • onSaveInstanceState 称为

    a)关于屏幕旋转

我通过调试发现,如果屏幕变黑,我无法确定是否调用了onSaveInstanceState ...

我的应用程序是一个用于记录的应用程序,这意味着,您将手机放在一边并不时地回来并填写您的日志......所以有时,我的活动会使用空捆绑重新创建{ {1}}没有被调用,虽然我的应用程序位于前台,只有屏幕关闭...

问题

1)我该怎么做才能解决这个问题?我是否真的必须坚持保存我的片段状态和堆栈?

2)在屏幕旋转时,我可以确定onSaveInstanceState被调用,是吗?还有其他情况,我可以依赖onSaveInstanceState吗?

1 个答案:

答案 0 :(得分:1)

1)我正在审视这个帖子:android life cycle你应该使用onPause(),因为你无法确定该应用程序是暂停还是被杀死。 Android Lifecycle Picture

2)来自developer.android.com ( Activity)

  

请注意,这些语义之间会略有不同   针对从HONEYCOMB开始的平台的应用程序   定位先前的平台。从Honeycomb开始,应用程序就是   在onStop()返回之前不处于可填充状态。这个   可以调用onSaveInstanceState(Bundle)时的影响(可能是   在onPause()之后安全地调用并允许和应用程序安全   等到onStop()以保存持久状态。