我正在开发一个游戏,它使用opengl并有背景音乐。应用程序仅在横向模式下运行。
我遇到的问题,发生在用户锁定屏幕时。此时,调用onStop(),屏幕方向将更改,并且在我的活动因方向更改而重新启动后不久。这意味着opengl的表面被重新创建,音乐开始再次播放和其他各种事情。这是违反直觉的,因为锁定屏幕应该暂停CPU密集型操作,而不是启动它们。
android:configChanges="orientation"添加到清单没有任何作用。我确实意识到我可能在screenSize中缺少android:configChanges,但我无法添加它,因为我的目标是没有此选项的早期api版本。
所以,问题是:正确的处理方法是什么?我应该在哪个事件上初始化我的应用程序,以便一切按预期工作?

最佳答案

向清单中的configChanges添加screensize并不意味着您的程序不会在旧版本上运行。您只需要将targetsdkversion设置为更高版本,将minsdkversion设置为您喜欢的任何版本。在intelljidea中,我在项目结构中将moduleskd设置为4,这样它就不会突出显示屏幕大小无效。在日食中一定是相似的。

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

<activity android:name=".MyActivity"
      android:label="@string/app_name"
      android:configChanges="orientation|screenSize|keyboard|keyboardHidden|navigation">

您还可以在以下代码中检查版本:
if (Build.VERSION.SDK_INT >= 11)

这样你的应用就可以在2.2和更高版本上运行。
我认为您不需要更改配置,因为您的游戏可能只在横向模式下运行,但如果您有兴趣看看我的问题非常类似于您和我自己的答案。
replace layout on orientation change

07-24 09:47
查看更多