0

Android 用の OpenGL ES アプリで初期化されたすべての変数を保持する方法がよくわかりません。私のアプリは初期化が非常に遅く、初期化された変数を保存しないと、画面をオフにして再度オンにするか、ホームキーを押してアプリに戻るたびに、すべての初期操作が再び開始され、これにより、ゲームへの復帰が遅くなり、ゲームの最初の状態に戻ります。アプリがバックグラウンドに置かれている場合、すべてを再度初期化することなく、アプリのステータスを保持して元に戻すにはどうすればよいですか? onSaveInstanceState関数を変更する必要がありますか?

編集:私が望むのは、アプリがコンテキストをリロードせず、最初に開始された場合のようにアプリに戻ることが続かないことです

4

2 に答える 2

1

変数を保存およびロードするには、onSaveInstanceState と onRestoreInstanceState を使用する必要があります。

Save Instance State を使用して Android アクティビティの状態を保存することが必要だと思います

于 2012-04-06T12:48:49.117 に答える
1

私はまだあなたの質問を本当に理解していません。とにかく、どの状態が破棄されるかによって、他に選択肢はありません。上記の私のコメントのように、少なくとも 3 種類の状態があります。

  1. アセットから再現できる(ゲーム)状態。
  2. (ゲーム) 現在のユーザー ビューを表す状態 (@AndrewWilkinson からの回答を参照)
  3. OpenGL コンテキスト。

アクティビティのライフサイクルを見てください。プロセスがメモリから追い出されない場合は、状態 1. と 2. が保持されるため、心配する必要はありません。悪いことは、あなたにはわからないので、アプリがメモリから追い出されて後で再作成されないように準備する必要があります。そのため、いつでも状態 2. を保持する必要があります。

状態 3 の場合: を呼び出すたびにGLSurfaceView.Renderer.onSurfaceCreated、OpenGL コンテキストがなくなったことを確認できます。再度表示するために必要なものはすべてアップロードする必要があります。保存フラグを設定すると役立つ場合がありますが、確実ではありません。

読み込みに時間がかかりすぎる場合は、読み込みに時間がかかりすぎず、ユーザーを満足させる単純な一時停止画面を表示することを検討してください。より怠惰な方法で物事を行うことを検討してください。一部のコンテンツはオンデマンドで読み込まれ、熱心ではありません。

于 2012-04-07T08:15:24.377 に答える