8

我已经开发了几个月的应用程序并准备发布。我一直在使用带有 Android 4.0.4 的摩托罗拉 Xoom 进行整个过程的测试,并且一切正常。我从 Google 购买了 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 关闭并重新打开时会有这么多额外的、不必要的方法调用?它似乎完全破坏了应用程序,然后重新创建。

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

提前感谢您的帮助。韦恩

4

2 回答 2

6

Jelly Bean 4.1 - Nexus 7 在此路径上有一个选项:

设置 -> 开发人员选项 -> 不要保留活动...

该选项将终止所有进入后台的活动。因此,当 Android 将状态更改为“睡眠”和“唤醒”时,您的活动将被破坏并重新创建。

于 2012-09-18T09:47:24.387 回答
4

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

关于配置变更,可以阅读这个官方页面

于 2012-07-26T20:02:31.050 回答