1

applicationWillTerminate が iOS4 で実質的に呼び出されなくなったことを理解しています。しかし、私はこの状況を持っています:

  • 私のオーディオブックはバックグラウンド モードになり、オーディオを再生し続けます。
  • SDK のバージョン 3.x までは、MP3 ファイルを聴いた時点を applicationWillTerminate; に保存しました。
  • 今、私は applicationWillTerminate (iPhone 3G の場合) でこの保存を保持し、applicationDidEnterBackground で同じメソッドを実装するように言われました: しかし、これはユーザーが最後にいたポイントではなく、バックグラウンドに入ったポイントだけを保存します...

しかし、ユーザーがアプリケーション ドックからアプリケーションを終了する瞬間、または呼び出されたメソッドの方がよいのはどれでしょうか? これは存在しますか?

ApplicationWillTerminate はメモリの問題が発生したときに呼び出されますが、実際にはユーザー自身がアプリをシャットダウンしたときに何が起こるかわかりません。

繰り返しますが、applicationDidEnterBackground は役に立ちません。ユーザーがバックグラウンド モードに入ると、オーディオブックを聴いている間、この位置に長時間とどまることができ、アプリを再度起動すると、これがシャットダウンされた後、つまり、彼がバックグラウンド モードに入ったときの音声ファイルの位置を見つけます…</p>

私は本当に混乱しています…</p>

ご協力いただきありがとうございます!

4

1 に答える 1

2

オーディオの再生が継続するかどうかに関係なくapplicationWillResignActive:、 再生位置を に自動的に保存する必要が あります。applicationDidEnterBackground:次に、別のセーブを入れますapplicationWillTerminate。そうすれば、次に何が起こるかに関係なく、最後のプレイ場所が保存されます。次のイベントは、保存されたプレイ場所を上書きして更新するだけです。

さらに良いオプションは、オーディオ プレーヤー オブジェクト自体が、中断された場合などに保存をトリガーするようにすることです[AVAudioPlayerDelegate audioPlayerBeginInterruption:]。追加の作業が必要になる場合がありますが、中断の原因に関係なく、再生場所が常に保存されていることが保証されます。

于 2010-07-10T12:47:04.253 に答える