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

为什么当睡眠在我的视图中启动而不是从主屏幕启动时,我的android应用程序调用onCreate()?,android,android-activity,sleep,activity-lifecycle,Android,Android Activity,Sleep,Activity Lifecycle,我的应用程序似乎表现完美,除了我不明白一件事。当我按下home(主页)按钮并返回到我的应用程序时,先前的状态将(自动)恢复。当我按下home(主页)按钮,然后手机在主屏幕(或除我自己的视图以外的任何其他视图)进入睡眠状态,然后我返回到我的应用程序时,先前的状态会(自动)恢复 现在,更重要的是,当手机在我的活动处于上方时进入睡眠状态,它不会自动恢复以前的状态,但似乎会调用onCreate(),因为启动初始化会发生,而我的应用程序的行为就好像刚刚启动一样 我可以使用saveInstanceState

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

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

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

当我的生命周期方法出现问题时,我会添加onCreate,onPause、onResume等在我的所有活动中都有一个log.D(“in onPause()”),用于精确跟踪在什么时候调用哪个方法。

如果onCreate之前破坏了你的活动,Android只会调用onCreate,在这种情况下,onDestroy会被调用。在不调用onCreate的情况下保留活动状态的情况下,活动从未被销毁,而是一直运行


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

检查您的活动是否已将方向锁定为纵向横向,如果已锁定方向,它将调用onCreate()当它在睡觉前和醒来时改变方向时

您可以通过在清单的活动标记中添加
android:configChanges=“orientation”
来解决此问题

<activity 
android:name=".MainActivity"
android:screenOrientation="portrait"
android:configChanges="orientation"
/>


谢谢!作为一个新手,这有点让人不知所措,但是了解一点C&&Java非常有帮助。我从没看过你提到我的这篇文章。好东西。尽管如此,我还是不知道为什么当我的视图在上面而不是当我的应用程序在后台时,如果睡眠激活,那么onDestroy会被调用。我只是想知道为什么!!!(我可以保存变量,这样用户体验看起来就没有了,但是…)它的行为和我预期的一样,但我仍然不明白为什么在我的应用程序中,当onDestroy位于顶部时调用它,而当它位于后部时调用它。哦,我想这并不重要,我真的不知道重力是如何工作的,但我可以利用它!!!(希望有一天我能找到答案!:)使用
android:configChanges=“orientation | screenSize”
。在睡眠时调用onCreate()很好,因为方向发生了变化。