もしかすると

registerListener とかヤッてるので kill されないのかな、と思いつつ試験してみました。とりあえず、電源投入で起動するサービスとそのサービスに bind して歩数カウントを出力する Activity で値を確認しつつ以下。

  • HOME ボタンでランチャーに戻ってはアプリ起動
  • Google マップとか MyTracks とかブラウザとか proxoid とか起動

で、HOME 長押しなナニから再度歩数な値を出力する Activity を選択したら数値が 0 初期化されておりました (ということは Service の onCreate が呼び出された事を指します)。
ただ、負荷が契機だったのか経過時間が契機だったのかは分からず。Activity は back で終了したけど HOME 長押しなリストには残った状態だったはず。
とは言え Activity 側では onPause で unbind しております。ので、Activity が終了したかどうかはあまり関係ないのかなぁ。

対策

として以下な保険をナニしとくのかなぁ。

  • いつ死亡しても良いように、値が変わるタイミングでデータの永続化を行なっておく
  • AlarmManager を使って定期的に startService する

しかし定期的って何だよ、と。

中身を見て

どーゆー条件で user が kickoff した Service を kill するのか、は確認した方が良いとは思うのですが、すごく大変そう。