Android-сервис убит «больше не хочет» - как его перезапустить?

У нас есть служба, которая постоянно собирает данные датчиков на телефоне. Этот сервис должен работать "навсегда", например до тех пор, пока пользователь хочет, и не будет убит системой.

Для пояснения этот сервисне предназначен для приложения, которое будет выпущено на рынок для широкой публики, оно написано для научного исследования. Таким образом, люди, работающие с приложением, полностью осознают, что их батарея разряжается быстрее, чем обычно, это не проблема

В любом случае, моя проблема в том, что сервис убивается через некоторое время работы. Иногда через час, иногда только через 7 или 10 часов.

Записи в журнале, когда служба убита, выглядят так. Это просто говорит "больше не хочу"иногда даже без вызова onDestroy (), насколько я могу судить.

07-20 17:07:11.593 I/ActivityManager(   85): No longer want my.project.datalogging (pid 23918): hidden #16
07-20 17:07:11.593 I/WindowManager(   85): WIN DEATH: Window{44c61570 my.project.datalogging/my.project.datalogging.DataLoggingApp paused=false}
07-20 17:07:11.603 I/BackgroundService(23925): onDestroy()

Или позже (после того, как я перезапустил его вручную):

07-20 19:00:49.677 I/ActivityManager(   85): No longer want my.project.datalogging:BackgroundService (pid 24421): hidden #17
07-20 19:00:49.677 I/ActivityManager(   85): No longer want my.project.datalogging (pid 24415): hidden #18
07-20 19:00:49.807    85 10707 I WindowManager: WIN DEATH: Window{44f1ea58 my.project.datalogging/my.project.datalogging.DataLoggingApp paused=false}

Я часто вижу, как убивают другие службыбольше не хочу"а затем сразу же перезапустить с"Планирование перезапуска аварийного сервисаMsgstr "Например, здесь с runkeeper:

07-20 17:30:45.503 I/ActivityManager(   85): No longer want com.fitnesskeeper.runkeeper (pid 24090): hidden #16
07-20 17:30:45.603 W/ActivityManager(   85): Scheduling restart of crashed service com.fitnesskeeper.runkeeper/.services.RunKeeperService in 5000ms
07-20 17:33:52.989 I/ActivityManager(   85): Start proc com.fitnesskeeper.runkeeper for service com.fitnesskeeper.runkeeper/.services.RunKeeperService: pid=24292 uid=10099 gids={3003, 1015}

В журналах нет записей о нехватке памяти. Тестирование проводится на (нескольких) Nexus One с 2.2 (Froyo FRF91).

Есть ли способ, которым я могу добиться такого поведения с моим приложением? Автоматический перезапуск после смерти?

Или это что-то совершенно другое, похожее на logcat?

Если вам нужна дополнительная информация, просто спросите, и я постараюсь предоставить ее :-)

Ответы на вопрос(2)

Ваш ответ на вопрос