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

Pio*_*trK 4 android android-activity

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

> onDestroy();
> onCreate();
Run Code Online (Sandbox Code Playgroud)

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

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

sfe*_*era 11

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

android:configChanges="keyboardHidden|orientation"在AndroidManifest.xml中声明此类活动可防止它们被销毁和重新创建,但也意味着您将通过覆盖onConfigurationChanged自行处理配置更改(如有必要)

  • 这是正确的答案!但请注意,如果您的目标是API 13或更高版本,则按下电源按钮也会触发"screenSize"的更改.因此,还需要覆盖它以获得所需的行为:android:configChanges ="keyboardHidden | orientation | screenSize" (5认同)