我有一个活动,我有一个片段堆栈,有时,这个堆栈丢失了......虽然我保存并恢复它...
我知道以下事项:
onSaveInstanceState
未被调用:
a)如果用户导航回来,这是有道理的......
b)活动是否完成
onSaveInstanceState
称为
a)关于屏幕旋转
我通过调试发现,如果屏幕变黑,我无法确定是否调用了onSaveInstanceState
...
我的应用程序是一个用于记录的应用程序,这意味着,您将手机放在一边并不时地回来并填写您的日志......所以有时,我的活动会使用空捆绑重新创建{ {1}}没有被调用,虽然我的应用程序位于前台,只有屏幕关闭...
问题
1)我该怎么做才能解决这个问题?我是否真的必须坚持保存我的片段状态和堆栈?
2)在屏幕旋转时,我可以确定onSaveInstanceState
被调用,是吗?还有其他情况,我可以依赖onSaveInstanceState
吗?
答案 0 :(得分:1)
1)我正在审视这个帖子:android life cycle你应该使用onPause(),因为你无法确定该应用程序是暂停还是被杀死。
2)来自developer.android.com ( Activity)
请注意,这些语义之间会略有不同 针对从HONEYCOMB开始的平台的应用程序 定位先前的平台。从Honeycomb开始,应用程序就是 在onStop()返回之前不处于可填充状态。这个 可以调用onSaveInstanceState(Bundle)时的影响(可能是 在onPause()之后安全地调用并允许和应用程序安全 等到onStop()以保存持久状态。