请指定您的意思是应用程序重置。
当你按下电源按钮时,很有可能你的应用程序停止。这就是为什么你看到onStart()
被叫停止(不是:暂停)您的应用程序。
鉴于这种情况,您描述的第三种情况是前两种情况的组合吗?换句话说,您如何在第三种情况下暂停您的应用程序?
更新关于您的评论:还有就是你的活动是停止和你的活动是破坏之间的差异。
旋转是配置更改。在这种情况下,您的Activity将被销毁并重新创建。如果您必须(取决于)onRetainNonConfigurationInstance()
回调方法和getLastNonConfigurationInstance()
方法,您可以单独处理此案例。安卓将呼叫onPause()
,onStop()
,onRetainNonConfigurationInstance()
和顺序onDestroy()
,然后用onCreate()
等继续,它将不处理任何事件,在此期间,使他们不会迷路。
最有可能的,你的一些代码位于错误的回调,使得在第三场景中,一些没有得到初始化/连接/ ...这是真的很难说没有代码和异常(如果它是例外)。
我建议你按以下步骤操作。
- 完成你的整个生命周期的理解和精确(创建,启动,重启,恢复,暂停,停止,销毁)
- 完成你的代码覆盖其他生命周期回调以及与日志消息(唐”别忘了调用超类的回调),并分析暂停,停止,旋转和组合
- 确定坠机
- 的角度分析在事故involvedd结合活动的生命周期对象的生命周期
或者你可以在这里发布一些代码和例外,当然。
更新2我对AVD进行了测试。我观察到以下内容:
当AVD处于横向方向时,我按下电源按钮,我的应用程序会收到纵向配置更改(大概是因为纵向方向锁定屏幕接管)。再次按下电源并解锁AVD,应用程序会再次收到配置更改,回到横向。
虽然没有解决您的问题,但它表明代码必须仔细放置在相应的回调中,因为在上述情况下,在重新创建时,活动仍不会显示,显示为。
如果更新您的问题,请给我评论。
所有的测试都是在模拟器上进行的。在第三次测试中,我按下电源按钮,等待屏幕锁定,旋转屏幕并将其解锁。很显然,这种情况与我只是旋转屏幕或简单地锁定屏幕并将其解锁的情况有所不同。 在前两种情况下,我总是发现onStart()是运行的,所以我认为这三项活动都被销毁了。但为什么会有差异? – 2013-03-06 09:13:34
@BeppiMenozzi我已经更新了我的答案。 - 吉兹,我不知道为什么有人低估了它。可能是没有掌握这个主题的人。或者有人点击了错误的箭头。 – 2013-03-06 09:33:46
你的回答并不是绝对值得赞赏的,我投票补偿:)当然是因为这是一个很好的答案。 – 2013-03-06 10:13:06