2011-09-15 10 views
4

OSによって(低メモリまたは低電力のために)アドロイドサービスが強制終了されたとき。サービスは殺される前に通知を受けますか? onDestroy()コールバックが呼び出されますか?Androidによって殺される前にバインドされたサービス状態を保存します。

私たちの主な関心事は、サービスが殺される前の状態を保存することです。リソースが利用可能になると、システムによってサービスが再開されることがありますが、サービスが停止する前にサービスの状態を保存するための推奨方法は何ですか?

添付されているサービスの強制終了プロセスを理解したシーケンス図です。これには、実行したいことが含まれています。

+0

私はシステムがあなたのアプリを殺したときにあなたがonDestroy()を呼び出すと思う(しかしわかりません)。しかし、アプリケーションが強制終了され、コールバックが発生しない(つまり、ユーザーがタスク・キラーでユーザーを殺す)時間があることを認識しておく必要があります。システム内で重大な問題を引き起こさないようにしたいと考えています。 – FoamyGuy

答えて

1

サービスは強制終了される前に通知を受けますか? onDestroy()コールバックが呼び出されますか?

おそらく。保証されていません。

私たちの主な関心事は、サービスが殺される前の状態を保存することです。

サービスは、RAMでのみ表現される状態を持つべきではありません。状態の変化(たとえば、データベースの使用)に応じて、状態を永続化する必要があります。

+1

onDestroy()は、Activityの場合と同様に、メモリのために強制終了された場合、決して呼び出されません。 – hackbod

+3

すべての状態変更をフラッシュに維持することは、バッテリの使用量を大幅に増やし、フラッシュの寿命を短縮するため、許容できません。 – Michael

0

APIレベル14(ICS)から、ユーザーがサービスを削除している場合、およびシステムがthat it is a good time for a process to trim unneeded memory from its processを決定した場合、アンドロイドはサービスを通知します。ここにはlinkがあります。

関連する問題