ホーム > Android, Android Programming > [android] Serviceプロセスの永続性は保証されていない?

[android] Serviceプロセスの永続性は保証されていない?

androidはユーザがアプリプロセスの終了を意識しない作りとなっています。
戻るボタンやホームボタンを押すとホーム画面に戻り、不要となったアプリプロセスはOSがテキトーなタイミングで殺します。
OSに殺されたくないときはServiceを作ってあげれば良いのですが、OSが勝手にServiceプロセスを再起動することがあるっぽいです。

Serviceでタイマーを仕掛けて周期的に処理を行っていたのですが、この周期的な処理が途切れてしまう現象が発生しました。
DDMSでプロセスをチェックしてみると、なんとタイマースレッドが死んでました ?(^o^)/

onCreate(), onStart(), onDestroy()にログを仕掛けて放置してみると、何も操作していないのにonCreate()がコールされてる・・・。
しかも、元のServiceプロセスのonDestroy()や新しいServiceプロセスのonStart()はなしです。
android:process属性を設定して別プロセスにしてみましたが、あえなくお亡くなりに。

まとめると以下のような感じ。

  1. ServiceプロセスはOSが再起動することがある。
  2. Serviceプロセスの再起動時には、新しいプロセスのonCreate()のみが呼ばれる。
  3. Serviceプロセスを別プロセスとしても再起動が発生する。

ちなみに、音楽プレイヤーとかのガリガリ動く物は再起動されることはないと思います。
長時間アイドル状態となっているから殺されるのでしょう。

関連する投稿:

  1. コメントはまだありません。
  1. トラックバックはまだありません。