1

我在做游戏。不久前,我遇到了一个问题。我想为旧的 sdk 版本保留 GLSurfaceView 的 GLContext 。我通过获取 GlSurfaceView 的最新源并将其放入我的项目中解决了这个问题。只需要一点点修复:gles 2.0 版本检查。

这几乎可以正常工作。但!

在 android 版本 2.xx 上,当应用程序的屏幕调整被破坏时,上下文和所有纹理都随之被破坏。有趣的事情:如果我按下主页按钮并且应用程序将进入后台并且屏幕转动它不会被破坏,但是如果我在它在前台运行时转动屏幕它肯定会被破坏。

我尝试了不同的方法来避免这种情况。

  1. 我尝试按照副本岛开发人员的建议分离上下文和表面线程。但没什么好。它总是重新加载纹理。

  2. 我已尝试按照此处的建议在 onDestroy 上分离视图: 将 Android 视图附加到布局/从布局分离,但也没有什么好处。

  3. 我尝试使用 FLAG_SHOW_WHEN_LOCKED。但是当屏幕打开时,储物柜屏幕不会出现。它会在按下主页按钮时显示。一点都不好。

  4. 我尝试在调用恢复时将应用程序发送到后台,然后使用 BroadcastReceiver 将其置于前台,但它始终被置于前台(即使它在后台)。如果它被系统破坏了,它根本不会显示出来。

不知道该怎么办。可能是我的手机资源不足,但我尝试过其他游戏,它们运行良好。无需长时间重新加载即可恢复自身。

4

1 回答 1

1

我不敢相信。这太愚蠢了。根据这个线程问题了解屏幕关闭和打开时的生命周期你必须添加

<activity ... android:configChanges="orientation" ... >

因此,当您关闭屏幕时,应用程序不会旋转然后销毁。

于 2013-01-31T13:47:00.717 回答