ユーザーが画面をロックして (上部の画面ロック ボタンを使用)、すぐにアプリケーションに戻る場合と、ユーザーがホーム ボタンを押してすぐにアプリケーションに戻る場合の違いがわかりません。
すべて同じ呼び出しが行われているようです。私の観察から:
ホームボタンまたは画面ロックが押されたときに呼び出されます: onPause -> onStop
ホームボタンまたは画面ロックが再度押された後にアプリケーションが押されたときに呼び出されます: onRestart -> onStart -> onResume
私の個人的な問題:
onResume で SurfaceView と GLSurfaceView を FrameLayout に再作成しているため、これは特に厄介ですが、押されたボタンに応じて、要素の順序が変更されます。onResume に次のコードがあります。
cameraPreviewArea = (FrameLayout) findViewById(id.camera_preview);
cameraPreviewArea.addView(glView, glLayout);
cameraPreviewArea.addView(camprevSurfaceView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
これには、次の状況で glSurfaceView を一番上に表示する効果があります: アプリが初めて起動されたとき、およびアプリが画面ロックから再開されてから画面ロック解除されたとき。ただし、ホームボタンを押してアプリケーションを再度開くと、SurfaceView が glSurfaceView の上に配置されます。
次のように addView 呼び出しを切り替えると、逆の状況が発生します。ブール値フラグを使用してこれを修正できますが、画面のロック/ロック解除とホームボタンの違いが不明なため、ブール値をどこに設定するかが不明です。また、とにかくこの方法で問題を解決したくありません。ハックに見え、問題を実際に理解していないからです。
前もって感謝します!