Jelly Bean中的Android活动生命周期

我已经开发了几个月的应用程序,准备发布。 我一直在使用Android 4.0.4的摩托罗拉Xoom进行testing整个过程中,一切工作没有失败。 我从Google购买了Nexus 7(运行Jelly Bean 4.1),现在当设备处于hibernate或closures状态时,我正在获得活动生命周期中的各种问题。

我为了检查生命周期而创build了一个新项目,这就是我提出的结果。 以下代码是我在每个生命周期方法中所做的示例。

@Override protected void onPause() { Log.i("TEST", "onPause()"); super.onPause(); } 

Xoom的结果(预期结果)

 ---------- Program Launch ------------- onCreate(null) onStart() onResume() ---------- Turn Off Screen ------------ onPause() onSaveInstanceState(not null) onStop() ---------- Turn Screen On ------------- onReStart() onRestoreInstanceState(not null) onResume() 

Nexus 7的结果(意外结果)

 ---------- Program Launch ------------- onCreate(null) onStart() onResume() ---------- Turn Off Screen ------------ onPause() onSaveInstanceState(not null) onStop() onDestroy() onCreate(not null) onStart() onRestoreInstanceState(not null) onResume() onPause() ---------- Turn Screen On ------------- OnResume() onPause() onSaveInstanceState(not null) onStop() onDestroy() onCreate(not null) onStart() onRestoreInstanceState(not null) onResume() 

再次,这些结果来自一个全新的项目,除了每个方法中的Log语句以外,没有代码变化。 为什么在Nexus 7关机后重新开启这么多额外的不必要的方法调用呢? 这似乎是彻底摧毁了应用程序,然后重新创build。

为了完整起见,当使用homebutton然后重新启动应用程序时,设备之间的生命周期似乎是一致的。

在此先感谢您的帮助。 韦恩

Solutions Collecting From Web of "Jelly Bean中的Android活动生命周期"

看起来您的活动在相关场景中重新创build。 这通常发生在系统中发生configuration更改时。 您的活动默认情况下会重新创build并重新启动,除非您明确决定自行处理configuration更改。 你应该检查这个列表 ,当你打开/closures你的屏幕时可能会发生这些变化之一(因为你确定不会同时旋转设备?)。

关于configuration更改,您可以阅读这个官方页面 。

Jelly Bean 4.1 – Nexus 7在这个path上有一个选项:

设置 – >开发者选项 – >不要保持活动…

该选项将杀死所有进入后台的活动。 所以当Android将状态改为“睡眠”和“醒来”时,您的活动正在被破坏和重新创build。