如何防止在关闭屏幕时重新创建活动?
我做什么
- 启动Bejewels并前往珠宝屏幕。
- 很快按下电源按钮。屏幕已关闭,但设备未关闭。
- 再次按电源按钮。
醇>
我看到的内容
与关闭屏幕前相同的屏幕。
如果是我的应用程序(简单的应用程序,只是一个带有单个WebView的Web应用程序),则方案如下:
我做什么
- 启动我的应用。活动onCreate()方法将URL加载到WebView中。
- 很快按下电源按钮。屏幕已关闭,但设备未关闭。
- 再次按电源按钮。
醇>
我看到的内容
WebView正在重新加载页面。
我的期望
在Bejewels案例中,我希望看到相同的屏幕,我的应用程序是以前状态的页面:脚本正在运行,表单字段是 填充等。
调试显示,我错了(在上一个问题中),onDestroy()和onCreate()在屏幕刚打开时被逐个调用。由于我仍然听到由脚本播放的音乐,当屏幕关闭时,看起来活动和WebView都存在,直到我再次按下电源按钮。
我尝试了什么。
答案 0 :(得分:28)
此问题的解决方案可能与此处描述的相同:onDestroy gets called each time the screen goes on
听起来您的活动因配置更改而重新启动,请参阅http://developer.android.com/guide/topics/resources/runtime-changes.html。最常见的是当您的应用处于横向模式(如大多数游戏)时,然后通过点击电源按钮启用屏幕锁定。屏幕锁定处于纵向模式,因此会触发方向更改,从而触发重新启动的活动。
可以通过添加以下内容来覆盖此行为:
android:configChanges="orientation|keyboardHidden"
如果您的API级别低于13,则...到您的清单文件。或者
android:configChanges="orientation|keyboardHidden|screenSize"
...如果您的API级别大于13。
请注意,您可能需要转到project->属性并更新项目构建目标。如果您的构建目标小于13,则无法识别“screenSize”。
可能是一个不同的配置更改导致活动被重置。以下链接提供了可能的配置更改列表:http://developer.android.com/guide/topics/manifest/activity-element.html#config
答案 1 :(得分:1)
添加:
android:launchMode="singleTop"
清单xml中的活动部分。 见http://developer.android.com/guide/topics/manifest/activity-element.html
答案 2 :(得分:1)