当睡眠在我的视图中启动但不是从主屏幕启动时,为什么我的 android 应用调用 onCreate()?

Mar*_*all 3 android sleep activity-lifecycle android-activity

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

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

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

Ran*_*med 5

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

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

<activity 
android:name=".MainActivity"
android:screenOrientation="portrait"
android:configChanges="orientation"
/>
Run Code Online (Sandbox Code Playgroud)