我在RENDERMODE_WHEN_DIRTY中使用了GLSurfaceView(sdk版本7)。文档说我需要调用onPause / onResume,但没有它就可以正常工作,所以我很想知道。需要吗?如果我不这样做会怎么样?
答案 0 :(得分:11)
GLSurfaceView的onPause实现如下:
/**
* Inform the view that the activity is paused. The owner of this view must
* call this method when the activity is paused. Calling this method will
* pause the rendering thread.
* Must not be called before a renderer has been set.
*/
public void onPause() {
mGLThread.onPause();
}
您可以看到(以及文档说明)它暂停渲染线程。这会导致GLThread中的内部调用stopEglLocked,如下所示:
private void stopEglLocked() {
if (mHaveEgl) {
mHaveEgl = false;
mEglHelper.destroySurface();
mEglHelper.finish();
sGLThreadManager.releaseEglSurface(this);
}
}
所以你可以看到它破坏了一个昂贵的系统资源的表面,并导致线程等待(),这也节省了系统资源,cpu,baterry等。
因此,绝对需要调用GLSurfaceView的onPause和onResume。