3

我的应用程序似乎表现完美,除了我不明白一件事。当我按下主页按钮并返回我的应用程序时,之前的状态会恢复(自动)。当我按下主屏幕按钮,然后手机在主屏幕(或除我自己的视图之外的任何其他视图)中进入睡眠状态并返回我的应用程序时,之前的状态会(自动)恢复。

现在,更重要的是,当手机在我的活动处于顶部时进入睡眠状态时,它不会自动恢复以前的状态,但似乎调用 onCreate() 因为开始初始化发生并且我的应用程序的行为就像它刚刚启动一样。

我可以使用 saveInstanceState() 保存实例并调用存储的状态,因此最终问题是可以解决的,但我的问题是:如果 Android 从我的活动而不是从另一个活动进入睡眠状态,为什么 Android 会调用 onCreate()?如果它不调用 onCreate() 发生了什么,为什么我要打扰 saveInstanceState() 因为在每个实例中(除非内存不足),我的应用程序都会将用户返回到他们的最后一个“地标”,除非手机进入睡眠状态从我的活动。

4

3 回答 3

5

检查您的活动是否已将方向锁定为纵向横向,如果您已锁定方向,它将调用onCreate(),因为它会在睡眠前和唤醒时更改方向。

您可以通过添加android:configChanges="orientation"到清单中的活动标签来解决此问题。

<activity 
android:name=".MainActivity"
android:screenOrientation="portrait"
android:configChanges="orientation"
/>
于 2013-01-06T08:01:32.400 回答
2

当我遇到生命周期方法问题时,我会在我的所有活动中添加 onCreate、onPause、onResume 等,并在其中添加一个 log.D("in onPause()") 以准确追踪正在调用的方法在什么时候。

于 2012-02-07T21:06:16.950 回答
0

Android 只会在之前销毁您的活动时调用 onCreate,在这种情况下会调用 onDestroy。在没有调用 onCreate 的情况下保留您的活动状态的情况只是您的活动从未被破坏,它一直在运行。

以下概述了何时以及如何保存/恢复您的实例状态。

于 2012-02-08T09:05:40.243 回答