在模拟器中重新启动活动时未调用OnPause()

时间:2012-05-26 19:15:18

标签: android android-emulator activity-lifecycle

我选择将OnPause()方法中的持久应用程序状态保存到我的数据库,因为OnPause()可以保证在根据the documentation of the activity life cycle应用程序被杀之前被调用。

现在我使用eclipse和avd模拟器(api level 8)面临以下行为:
1.我通过eclipse启动我的应用程序 - Instance1
2.我再次通过eclipse启动我的应用程序 - Instance2

现在Instance1终止而没有调用OnPause()

有人可以解释一下为什么OnPause()没有被召唤?我认为保证永远被称为。如果不是这种情况,也许是因为eclipse终止Instance1进程的方式,那么我想知道我是否可以改变它。非常感谢。

2 个答案:

答案 0 :(得分:4)

当您通过eclipse启动应用程序时,它将有效地从已经在设备或模拟器上运行的同一应用程序的任何实例中删除地毯。这在实践中永远不会发生,只有在从eclipse运行时才会发生。

所以你可以计划一直调用onPause()。

答案 1 :(得分:0)

你的意思是你通过eclipse启动应用程序 - 实例1和2?

单击运行按钮时,模拟器(在您的情况下或真实设备中)运行您的应用程序。请不要在其他AVD中运行它(如果我根据你的实例1和2得到正确的话)。如果您已将日志代码放入onCreate()和onPause()方法中,例如Log.i(TAG,“我在onCreate()!”);,您应该在logcat中看到它。因此,当您启动应用程序时,您将看到onCreate消息,当您单击主页按钮时,您将看到onPause()消息。

这是保证被调用的方式。