Serviceに関して再々勉強したのでメモです。Serviceを立ち上げる時に、以下の事に注意する必要あります。

  • Serviceのライフサイクル
  • startServiceした場合とbindした場合の挙動の違い
  • Serviceが落ちる場合の考慮

Serviceのライフサイクル

Serviceが落ちることへの対処が一番大変です。リソース不足によるkillもあれば、Task Killer系アプリによるkillもあります。killされると、ServiceはActivityManagerにより自動で再起動されます。しかし、通常のライフサイクルとは別の挙動になります。以下の流れになります。

  1. Killされます
  2. onDestroyが呼ばれません
  3. onCreateが呼ばれます
  4. onStartは呼ばれません

非常に困りますね。

落ちないServiceについて – Android-SDK-Japan | Google グループ で書かれているように、状態を永続化するしか手がないように思えます。

Serviceに関しては、リンクが参考になります。

公式のリンク

一読を