我已经开发了几个月的应用程序,并准备好发布。我一直在使用带有Android 4.0.4的摩托罗拉Xoom进行整个过程的测试,一切都运转良好。我从谷歌购买了Nexus 7(运行Jelly Bean 4.1),当设备休眠或关闭时,我现在遇到活动生命周期的各种问题。
我创建了一个新项目,其唯一目的是检查生命周期,这是我想出的结果。以下代码是我在每个生命周期方法中所做的一些示例。
@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关闭并重新打开时,为什么会有这么多额外的,不必要的方法调用?它似乎完全破坏了应用程序,然后重新创建。
为了完整起见,当使用主页按钮然后重新启动应用程序时,设备之间的生命周期似乎是一致的。
提前感谢您的帮助。 韦恩
答案 0 :(得分:6)
Jelly Bean 4.1 - Nexus 7在此路径上有一个选项:
设置 - >开发者选项 - >不要保持活动...
该选项将终止所有转到后台的活动。 因此,当Android将状态更改为“正在睡眠”和“唤醒”时,您的活动将被销毁并重新创建。
答案 1 :(得分:4)