iOS4でマルチタスクに対応しようとしています。バックグラウンドで実行しているのではなく、可能な限り実行中の状態で復元したいだけです。私はすべてGLゲームです。
applicationWillResignActive 中に、GL レンダリングを停止し、整理してゲームを静かに一時停止するフラグを設定しました。
applicationDidEnterBackground の間、画面バッファを解放し、glFinish を呼び出します。
applicationWillEnterForeground では、バッファを再度割り当てます
そして applicationWillEnterForeground で、ゲームの一時停止を解除します
これで、これらすべてが呼び出されて機能します。つまり、ホームボタンを押すとゲームが終了し、アイコンをタップすると同じ状態に戻ります。アプリは終了しません。これは、小さなアプリを実行してからアプリに戻る場合と同じです。
ただし、別のゲームなどの大規模なアプリを実行して戻ってくると、最後にレンダリングされたフレームが戻ってきます。5秒間の休止。その後、ゲームが再起動するか、単に踏み台に戻ります。
どこにでもログがあり、失敗したリターンのデバッガーでは、applicationWillEnterForeground または applicationWillEnterForeground への呼び出しがなく、(gdb) を取得するだけです。
私が理解していることから、システムが私のメモリを必要とする場合、システムは黙って殺されます。バックグラウンドに入ったときにすべてを保存するので、これで問題ありません。では、再実行すると最後のレンダー フレームが取得されるのはなぜですか。
私が欠けているものを誰か知っていますか?
ありがとう