我有两个片段,它们有一个TextureView来显示摄像机预览或播放视频。
使用应用程序一段时间后,玩屏幕, 我在logcat中得到了这个错误
OpenGLRenderer﹕ GL_INVALID_OPERATION
我从我的碎片中释放出一切, 所有成员都设置为null。
@Override
public void onDestroyView() {
Logg.DEBUG(TAG, "onDestroyView");
super.onDestroyView();
if (mMediaPlayer != null) {
mMediaPlayer.stop();
mMediaPlayer.release();
mMediaPlayer = null;
}
nextButton = null;
pauseButton = null;
backButton = null;
playButton = null;
frontTextView = null;
backTextView = null;
surface = null;
videoView = null;
}
我看到整个视图变得怪异......
我错过了什么?
答案 0 :(得分:1)
您的屏幕截图显示了系统OpenGL上下文损坏/损坏的情况。请检查您释放资源的线索。 GLContext应该从分配它的完全相同的线程中销毁。在你的情况下,它可能是由错误的线程进行的setSurface / setDisplay调用。
如果您有稳定而简单的重现步骤,可以尝试使用Tracer for OpenGL ES捕获GL日志,但在捕获过程中它会减慢您的应用很多