gpt4 book ai didi

android - 调用 GLSurfaceView.onPause() 后 Activity 暂停超时

转载 作者:行者123 更新时间:2023-11-29 14:06:57 24 4
gpt4 key购买 nike

我有一个使用 OpenGL 的游戏。我已经建立了示例,在大多数情况下,具有主线程、渲染器线程 (GLSurfaceView.Renderer) 并添加了一个 GameLogic 线程。当游戏执行时,一切似乎都完美运行。当按下返回键并触发 onPause() 时,我也触发了 GLSurfaceView() 的 onPause,但此时我遇到了“崩溃”。这是 MainActivity 的 onPause:

@Override
protected void onPause() {
Log.d("Main", "Pre- Super onPause");
super.onPause();
Log.d("Main", "Post- Super onPause");
mGSGLView.onPause();
Log.d("Main", "Post- GL onPause");
}

除最后一个日志点外,每个日志点都已到达。在 logcat 中,紧接着“Post Super onPause”行,我得到一个 Activity 暂停超时。

我没有覆盖 GLSurfaceView 类中的 onPause... 据我所知,这已经为我工作了一段时间,但最近开始出现,因为我第二次尝试时开始出现完全黑屏运行我的游戏,直到最终收到 ANR。我的游戏有 95% 是本地运行的。与 San Angeles 示例类似,Renderer 调用 onDraw,例如调用 NativeDraw 函数而不是 java.lang. onSurfaceCreated、onSurfaceChanged也是如此,我也在逻辑线程中调用了一个原生的GameLogic方法(基本上调用的都是线程sleep和那个逻辑方法。)

我希望我已经提供了足够的信息,如果还有什么我应该提供的,请告诉我。

编辑 - 好吧......我实际上已经将问题缩小到一个本地函数调用,我正在释放某些指针,这些指针之前使用 malloc() 为它们分配了内存。我的代码看起来没问题,但如果我省略调用,一切正常,所以我的 free() 调用一定是在破坏某些东西......

最佳答案

好吧,我只是自己回答这个问题,因为该解决方案非常适合我自己的代码,以至于没有人能够做到。

如果您在 native 端分配了内存,请注意不要释放它,直到您确定没有其他代码会尝试访问它。

关于android - 调用 GLSurfaceView.onPause() 后 Activity 暂停超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6323911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com