Android 在emulator中重新启动活动时未调用OnPause()

Android 在emulator中重新启动活动时未调用OnPause(),android,android-emulator,activity-lifecycle,Android,Android Emulator,Activity Lifecycle,我选择将OnPause()方法中的持久化应用程序状态保存到我的数据库中,因为OnPause()保证在应用程序根据被终止之前被调用 现在,我在使用eclipse和avd模拟器(api级别8)时面临以下行为: 1.我通过eclipse-Instance1启动我的应用程序 2.我再次通过eclipse启动我的应用程序-Instance2 现在Instance1将在不调用OnPause()的情况下终止。 谁能解释一下为什么没有调用OnPause()?我想它一定会一直被叫来。如果不是这种情况,可能是因为e

我选择将
OnPause()
方法中的持久化应用程序状态保存到我的数据库中,因为
OnPause()
保证在应用程序根据被终止之前被调用

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

现在Instance1将在不调用OnPause()的情况下终止。


谁能解释一下为什么没有调用
OnPause()
?我想它一定会一直被叫来。如果不是这种情况,可能是因为eclipse终止Instance1进程的方式,那么我想知道是否可以改变这种情况。非常感谢。

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


所以您可以计划总是调用onPause()。

您是指通过eclipse启动应用程序-实例1和实例2

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


这是保证被呼叫的方式。

谢谢您的评论。你让我确信,我可以依靠设备上的暂停。无论如何,我想等待一点,接受你的回答,因为我希望有人知道如何让仿真器表现出与设备相同的行为。应用程序在仿真器上的行为与在设备上的行为相同。如果您从eclipse运行应用程序“com.a.b”,并且“com.a.b”已经在模拟器上运行,或者在真实设备上运行,则“com.a.b”将在不向应用程序发出任何通知的情况下被终止(就像在模拟器运行时从设备上拔下电池或拔下电源插头一样)。但是,如果在正常操作期间关闭了应用程序,则将调用onPause()。我的意思是,我在同一个仿真器上启动应用程序,然后在同一个仿真器上再次启动它,该仿真器在不调用onPause的情况下杀死第一个实例。在这里询问之前,我使用日志消息进行了测试。onPause和onStop的日志消息未显示,这表明在此场景中未调用onPause。我希望模拟器也尊重生命周期,但事实似乎并非如此。