2012-04-19 21 views
1

デバイスの電源が入っている間に、バックグラウンドでiOSが自動的にアプリを終了することができますか(applicationWillTerminate:)?iOSでバックグラウンドでアプリを強制終了できますか?

は、私は他の二つの例、合計3で何が起こるかにも興味:

  1. デバイスの電源がオフになっている
  2. デバイスに電源が投入されて
  3. デバイスは、バッテリ

Iを失いますapplicationWillTerminate:がどれほど頻繁に呼び出されるのか知りたいからです。私はリモート通知のために登録しているので、これを知りたいです。また、デバイストークンをサーバーに送信できない場合は、そのメソッドが再び呼び出される可能性があることを知りたいとします(つまり、デバイストークンをサーバーに送信し直す)。

答えて

3

メモリが不足している場合は、applicationWillTerminateに電話をかけてアプリをシャットダウンすると、iOS になります。

docsは方法についてこれを言う:

...しかし、この方法では、アプリケーションがバックグラウンドで実行されている状況で呼び出すことができ(中断されていない)と、システムがためにそれを終了する必要があります何らかの理由で。

7

アプリケーションがマルチタスク(iOS 4.0以降にリンクされているもののデフォルト)をサポートしている場合、このメソッドはほとんど呼び出されません。ドキュメントでは、アプリケーションがバックグラウンドで実行されており、システムが終了したい場合にと呼ばれることがあります。しかし、私の経験では、バックグラウンドで音楽を積極的に演奏している音楽アプリを実行するときに実際に呼び出されたのはこれまでに見たことがあり、システムはすべてを捨てています。バックグラウンドタスクが実行されている場合(音楽ではなく短期のバックグラウンドタスク)、このメソッドが呼び出されずにアプリケーションが終了したのを見てきました。

私は、これを呼び出すことに頼ることはありませんし、バックグラウンドとバックグラウンドタスクの完了ブロックに移行するためのデリゲートメソッドで行う必要があるすべてのクリーンアップを試みますアプリが放棄される数秒前)。

5

iOSで自動的にアプリを終了させることはできますが、ユーザーは手動でアプリを終了させることができます。実際には、のユーザーがあなたのアプリを殺すことができる時間は、バックグラウンドにあるときだけです。さらに、アプリが「バックグラウンドで」いるときは、実際に実行されているよりも中断される可能性が高いので、フォアグラウンドアプリではないときに多くの処理を行うことには考慮しないでください。

についてはとなります。-applicationWillTerminate:は、ユーザーとそのデバイスの使い方によって異なります。あなたがそれを取得するときに適切に処理し、そうでなければあなたのビジネスについて行く必要があります。

+0

+1。私は、彼らがメモリを節約すると信じているので、アプリを殺す多くのユーザーがいる。 niceを使い、あなたのアプリを殺す(間違った)ユーザのために 'applicationWillTerminate:'を使うのは良い方針です。 – kevboh

+0

コアデータデータベースを保存すると、ユーザーが自分のアプリを殺すとどうなりますか?私に何ができる? – acecapades

+0

@acecapadesドキュメントごとに、 'applicationWillTerminate'メソッドの中にデータを保存するのに約5秒間かかります。 – RileyE

関連する問題