防止在锁定时重新启动横向Android应用程序

Mea*_*EYE 3 android orientation lockscreen

我正在开发一种使用OpenGL并具有背景音乐的游戏(有点).应用程序仅在横向模式下运行.

我遇到的问题,当用户锁定屏幕时发生.在onStop()调用该点时,屏幕方向会发生变化,并且在我的"活动"因方向更改而重新启动后不久.这意味着重新创建OpenGL表面,音乐再次开始播放以及各种其他事物.这是违反直觉的,因为锁定屏幕应该暂停CPU密集型操作,而不是启动它们.

添加android:configChanges="orientation"到清单什么也没做.我不知道,我可能丢失screenSizeandroid:configChanges,但因为我是针对那些没有此选项可用较早版本的API,我不能添加.

所以,问题是:处理这个问题的正确方法是什么?我应该在哪个事件上初始化我的应用程序,以便一切按预期工作?

Ali*_*Ali 5

将screenSize添加到清单中的configChanges并不意味着您的程序不会在旧版本上运行.您只需将targetSdkVersion设置为更高版本,将minSdkVersion设置为您喜欢的任何内容.在intelljIDEA中,我在项目结构中将ModuleSKD设置为4,因此它不会将screenSize突出显示为无效.它在Eclipse中必须类似.

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15" />

<activity android:name=".MyActivity"
      android:label="@string/app_name"
      android:configChanges="orientation|screenSize|keyboard|keyboardHidden|navigation">
Run Code Online (Sandbox Code Playgroud)

您还可以在代码中检查版本,如下所示:

if (Build.VERSION.SDK_INT >= 11) 
Run Code Online (Sandbox Code Playgroud)

这样你的应用程序可以在2.2以及更高版本上运行.

我认为你不需要onConfigurationChanged,因为你的游戏可能只在横向模式下运行,但如果你有兴趣看看我的问题非常类似于你和我自己的答案.

更换方向更改时的布局