5
RENDERMODE_WHEN_DIRTYにGLSurfaceView(sdkバージョン7)を使用しています。ドキュメントではonPause/onResumeを呼び出す必要があると書かれていますが、それがなければ正常に動作するので、私は疑問に思います。それは必要ですか?私がしなければどうなりますか?GLSurfaceView:onPause/onResumeを呼び出す必要がありますか?
RENDERMODE_WHEN_DIRTYにGLSurfaceView(sdkバージョン7)を使用しています。ドキュメントではonPause/onResumeを呼び出す必要があると書かれていますが、それがなければ正常に動作するので、私は疑問に思います。それは必要ですか?私がしなければどうなりますか?GLSurfaceView:onPause/onResumeを呼び出す必要がありますか?
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();
}
あなたが見ることができる(およびドキュメントの状態)、それはレンダリングスレッドを一時停止していること。
だから、private void stopEglLocked() {
if (mHaveEgl) {
mHaveEgl = false;
mEglHelper.destroySurface();
mEglHelper.finish();
sGLThreadManager.releaseEglSurface(this);
}
}
あなたがそれを見ることができますが、高価なシステムリソースである表面を破壊し、またシステムリソースを節約する、()に待機するスレッドが発生します。これは、このようになりますstopEglLockedにGLTHREADで内線通話を引き起こし、cpu、baterryなど
GLSurfaceViewのonPauseとonResumeを呼び出すことは間違いありません。
アプリケーションを終了して戻っても正常に動作しますか?私はいつも、アプリケーションを終了してから戻った後にGlSurfaceViewを動作させ続けるために、onPauseとonResumeを実装する必要がありました。 – Nitrex88
はい、それはすべての条件で正常に動作します。ホーム画面リターン、スイッチ画面のアンロック解除、リターン、フォーカスの消失、復帰。数週間はうまく動いていて、ドキュメンテーションのonPauseを読んでいるだけなので、私は疑問に思います。 – ADB