【发布时间】:2025-12-06 01:00:02
【问题描述】:
我正在制作游戏。 不久前,我遇到了一个问题。我想为旧的 sdk 版本保留 GLSurfaceView 的 GLContext 。 我通过获取 GlSurfaceView 的最新源并将其放入我的项目中解决了这个问题。只需要一点点修复:gles 2.0 版本检查。
效果几乎很好。但是!
在 android 版本 2.x.x 上,当应用程序的屏幕调整被破坏时,上下文和所有纹理随之发生。 有趣的事情:如果我按下主页按钮,应用程序将进入后台并且屏幕转动它不会被破坏,但如果我在前台运行时转动屏幕,它肯定会被破坏。
我尝试了不同的方法来避免这种情况。
我已尝试按照副本岛开发人员的建议分离上下文和表面线程。但没什么好。它总是重新加载纹理。
我已尝试按照此处的建议在 onDestroy 中分离视图:Attach/detach Android view to/from layout,但也没有任何好处。
我尝试使用 FLAG_SHOW_WHEN_LOCKED。但是当屏幕打开时,储物柜屏幕不会出现。它会在按下主页按钮时显示。一点都不好。
我尝试在调用恢复时将应用程序发送到后台,然后使用 BroadcastReceiver 将其置于前台,但它始终被置于前台(即使它在后台)。如果它被系统破坏了,它根本不会显示出来。
不知道该怎么办。可能是我的手机资源不足,但我尝试过其他游戏,它们运行良好。无需长时间重新加载即可恢复自身。
【问题讨论】:
标签: android destroy glsurfaceview