我们有一个增强现实应用程序,当指向特定标记时,会显示视频或3D模型。这个功能很好,但是一旦我们通过“返回”按钮退出MediaPlayer活动,OpenGL上下文似乎被销毁了。然后应用程序重新启动并需要重新加载所有资产,包括3D模型,这会导致大约10-15秒的延迟,我们想要防止这种情况。
我已经阅读了有关setPreserveEGLContextOnPause(true)的文章,并将其放在我们的GLSurfaceView中(我们有一个3.x平板电脑),但似乎没有起作用(需要实现其他内容才能使其工作吗? 我几乎找不到可用的文档)。
我不确定问题可能出现在我们的应用程序的哪个位置,我认为我们的GLSurface可能被销毁了,而我们没有注意到它。
从MediaPlayer退出的代码如下:
有什么提示可以保留OpenGL上下文,或退出MediaPlayer而不破坏我们的主要活动?
我已经阅读了有关setPreserveEGLContextOnPause(true)的文章,并将其放在我们的GLSurfaceView中(我们有一个3.x平板电脑),但似乎没有起作用(需要实现其他内容才能使其工作吗? 我几乎找不到可用的文档)。
我不确定问题可能出现在我们的应用程序的哪个位置,我认为我们的GLSurface可能被销毁了,而我们没有注意到它。
从MediaPlayer退出的代码如下:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)) {
this.finish();
Intent intent = new Intent(MediaPlayerActivity.this, OpenGLActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);
}
return super.onKeyDown(keyCode, event);
}
有什么提示可以保留OpenGL上下文,或退出MediaPlayer而不破坏我们的主要活动?
onKeyDown(int, KeyEvent)
中转换到这些活动,一个完全不使用GL,另一个显示一个简单的GLSurfaceView
。媒体播放器很可能需要自己的GL上下文,迫使平板电脑回收你的上下文。 - JensActivity.onRetainNonConfigurationInstance()
并在onCreate()中重复使用它(如果找到)。在那里,你可以至少存储你的模型以防止需要重新加载它。 - harism