質問: androidで、Sensor.TYPE_STEP_DETECTORを使用して歩数計アプリを作成しようとしています。 serviceでTYPE_STEP_DETECTORの結果を取得して、アプリ内のDBに日時と歩数を保持しようとしています。 よって、serviceは常に動作しておく必要があります。 絶対に死なないserviceを作成するにはどうすればよいのでしょうか? 現状は、onStartCommandの戻り値で、START_STICKY を返却しています。 ・アプリを終了 ・履歴から削除 ・EclipseのDDMSのSTOPボタンで削除 上記の場合は、しばらくするとサービスが再起動しました。 ・アプリのデータ削除 上記の場合は、サービスが再起動しませんでした。 絶対に死なないサービスを作成する方法はあるのでしょうか? 何卒アドバイスをよろしくお願い致します。
回答: 絶対に死なないわけではありませんが、 定期的に alarm を BroadcastReceiver で受け取って、そこから startService() するのはいかがでしょう? 死んでしまっても再起動することができます。 または、startForeground() するとかなり死ににくくはなります。 余計なお世話かもしれませんが、歩数計なら TYPE_STEP_DETECTOR より TYPE_STEP_COUNTER の方が適しているのでは? という気もしました。