如何防止在Android上按下电源按钮时调用onDestroy()后跟onCreate()

时间:2011-11-28 20:54:44

标签: android android-activity

我正在记录每个onCreate()和onDestroy()调用。我发现,一旦我点击我的Android上的电源按钮(以及模拟器上的电源按钮!),我的活动就会打电话

> onDestroy();
> onCreate();

这会杀死我的游戏,然后立即从头开始重新打开它。当然,一旦用户解锁屏幕,游戏就会显示在主菜单中,所有进度都会被杀死。

是否可以覆盖或禁用此行为?

2 个答案:

答案 0 :(得分:11)

当您按下电源按钮时,屏幕锁定通常会启动。这可能会触发当前在前台活动的配置更改(屏幕锁定通常处于纵向模式),导致其被销毁并重新创建。 / p>

在AndroidManifest.xml中为此类活动声明android:configChanges="keyboardHidden|orientation"会阻止它们被销毁和重新创建,但也意味着您将通过覆盖onConfigurationChanged

自行处理配置更改(如有必要)

答案 1 :(得分:3)

当调用onCreate()onDestroy()方法时,您无法覆盖(至少不会遇到非常大的痛苦)。你要做的最好的事情是弄清楚如何在他们被召唤的范围内工作。将您的州保存在onDestroy()。这样做可以让你的应用程序能够容忍这个调用序列,因为坦率地说,它应该/必须。这就是android的工作方式。