1

ゲームを作っています。少し前に、私は問題を抱えていました。古い SDK バージョンの GLSurfaceView の GLContext を保持したかったのです。GlSurfaceView の最新のソースを取得してプロジェクトに入れることで、この問題を解決しました。ちょっとした修正が必要でした: gles 2.0 のバージョンチェックです。

それはほとんどうまくいきます。しかし!

Android バージョン 2.xx では、アプリケーションのスクリーン チューンが破棄され、コンテキストとすべてのテクスチャが一緒に破棄されます。興味深いことに、ホームボタンを押してアプリケーションがバックグラウンドに移動し、画面が回転しても破壊されませんが、フォアグラウンドで実行されているときに画面を回転すると、確実に破壊されます。

これを回避するために、さまざまなアプローチを試みました。

  1. レプリカ アイランドの開発者が推奨するように、コンテキスト スレッドとサーフェス スレッドを分離しようとしました。しかし、何も良いことはありません。常にテクスチャをリロードします。

  2. ここで推奨されているように、onDestroy のビューをデタッチしようとしまし

  3. FLAG_SHOW_WHEN_LOCKED を使用しようとしました。しかし、画面をオンにすると、ロッカー画面が表示されません。そして、ホームボタンを押すと表示されます。全然ダメ。

  4. 再開時にアプリをバックグラウンドに送信してから、BroadcastReceiver を使用してフォアグラウンドに移動しようとしましたが、常にフォアグラウンドに移動されます (バックグラウンドにあった場合でも)。システムによって破棄された場合は、まったく表示されません。

何をすべきかわからない。私の携帯電話のリソースが不足している可能性がありますが、他のゲームを試してみましたが、問題なく動作しました。そして、長いリロードなしで自分自身を復元します。

4

1 に答える 1

1

信じられない。これはとても愚かです。このスレッドによると、画面がオフになったときとオンになったときのライフサイクルを理解する上での問題を追加する必要があります

<activity ... android:configChanges="orientation" ... >

そのため、画面をオフにするときにアプリが回転して破棄されることはありません。

于 2013-01-31T13:47:00.717 に答える