ゲームを作っています。少し前に、私は問題を抱えていました。古い SDK バージョンの GLSurfaceView の GLContext を保持したかったのです。GlSurfaceView の最新のソースを取得してプロジェクトに入れることで、この問題を解決しました。ちょっとした修正が必要でした: gles 2.0 のバージョンチェックです。
それはほとんどうまくいきます。しかし!
Android バージョン 2.xx では、アプリケーションのスクリーン チューンが破棄され、コンテキストとすべてのテクスチャが一緒に破棄されます。興味深いことに、ホームボタンを押してアプリケーションがバックグラウンドに移動し、画面が回転しても破壊されませんが、フォアグラウンドで実行されているときに画面を回転すると、確実に破壊されます。
これを回避するために、さまざまなアプローチを試みました。
レプリカ アイランドの開発者が推奨するように、コンテキスト スレッドとサーフェス スレッドを分離しようとしました。しかし、何も良いことはありません。常にテクスチャをリロードします。
ここで推奨されているように、onDestroy のビューをデタッチしようとしまし た。
FLAG_SHOW_WHEN_LOCKED を使用しようとしました。しかし、画面をオンにすると、ロッカー画面が表示されません。そして、ホームボタンを押すと表示されます。全然ダメ。
再開時にアプリをバックグラウンドに送信してから、BroadcastReceiver を使用してフォアグラウンドに移動しようとしましたが、常にフォアグラウンドに移動されます (バックグラウンドにあった場合でも)。システムによって破棄された場合は、まったく表示されません。
何をすべきかわからない。私の携帯電話のリソースが不足している可能性がありますが、他のゲームを試してみましたが、問題なく動作しました。そして、長いリロードなしで自分自身を復元します。