onSaveInstanceState不会在子活动中被调用

时间:2017-08-03 09:39:39

标签: java android android-lifecycle

我有两个活动:

的A.class

B.class

A.class extends B.class。

我试图通过将Log messeges放在android应用程序生命周期方法中来了解发生了什么。这就是我得到的。

onCreate B.class 10399440 (Open activity)
onCreate A.class 10399440 (Open activity)
onResume B.class 10399440 (Open activity)
onPause  B.class 10399440 (Go to background using "home" button)
--- Open my application ---
onCreate B.class 114082588 (new instance)

正如您所看到的,我得到了一个新的B.class实例,您可以想象,我丢失了之前的所有数据,因此应用程序崩溃了。我在考虑使用onSaveInstanceState(Bundle)来避免这个问题,但是

B.class

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    LogUtil.debug(TAG, "onRestoreInstanceState B.class" + hashCode());
    super.onRestoreInstanceState(savedInstanceState);
    LogUtil.debug(TAG, "onRestoreInstanceState B.class" + hashCode());
}

@Override
protected void onSaveInstanceState(Bundle outState) {
    LogUtil.debug(TAG, "onSaveInstanceState B.class " + hashCode());
    super.onSaveInstanceState(outState);
    LogUtil.debug(TAG, "onSaveInstanceState B.class" + hashCode());
}

不会返回任何日志消息,这让我觉得onSaveInstanceState没有被调用。为什么这样,当我离开时,保存数据的正确方法是什么(在我的情况下):

Activity opened -> background [home button] -> open application

0 个答案:

没有答案