1

iOS4でマルチタスクに対応しようとしています。バックグラウンドで実行しているのではなく、可能な限り実行中の状態で復元したいだけです。私はすべてGLゲームです。

applicationWillResignActive 中に、GL レンダリングを停止し、整理してゲームを静かに一時停止するフラグを設定しました。

applicationDidEnterBackground の間、画面バッファを解放し、glFinish を呼び出します。

applicationWillEnterForeground では、バッファを再度割り当てます

そして applicationWillEnterForeground で、ゲームの一時停止を解除します

これで、これらすべてが呼び出されて機能します。つまり、ホームボタンを押すとゲームが終了し、アイコンをタップすると同じ状態に戻ります。アプリは終了しません。これは、小さなアプリを実行してからアプリに戻る場合と同じです。

ただし、別のゲームなどの大規模なアプリを実行して戻ってくると、最後にレンダリングされたフレームが戻ってきます。5秒間の休止。その後、ゲームが再起動するか、単に踏み台に戻ります。

どこにでもログがあり、失敗したリターンのデバッガーでは、applicationWillEnterForeground または applicationWillEnterForeground への呼び出しがなく、(gdb) を取得するだけです。

私が理解していることから、システムが私のメモリを必要とする場合、システムは黙って殺されます。バックグラウンドに入ったときにすべてを保存するので、これで問題ありません。では、再実行すると最後のレンダー フレームが取得されるのはなぜですか。

ここのガイドに従いました: http://developer.apple.com/library/ios/#documentation/3DDrawing/Conceptual/OpenGLES_ProgrammingGuide/ImplementingaMultitasking-awareOpenGLESApplication/ImplementingaMultitasking-awareOpenGLESApplication.html

私が欠けているものを誰か知っていますか?

ありがとう

4

0 に答える 0