Serviço Android morto com "não quer mais" - como reiniciá-lo?

Temos um serviço que coleta continuamente os dados do sensor no telefone. Este serviço deve ser executado "para sempre", por exemplo. contanto que o usuário queira, e não seja morto pelo sistema.

Para esclarecimento, este serviço énão destinado a um aplicativo a ser lançado no mercado para o público em geral, ele foi escrito para um estudo científico. Portanto, as pessoas que executam o aplicativo estão plenamente conscientes de que a bateria será descarregada mais rapidamente do que o normal, isso não é problema.

Enfim, meu problema é que o serviço é morto após um tempo de execução. Às vezes depois de uma hora, às vezes apenas depois de 7 ou 10 horas.

As Entradas de Log quando o serviço é interrompido são assim. Apenas diz "não quero mais", às vezes sem nem ligar para Destroy (), pelo que sei.

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()

Ou mais tarde (depois que eu o reiniciei manualmente):

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}

Costumo ver outros serviços sendo mortos com "não quero mais"e, em seguida, reiniciado imediatamente com"Agendando o reinício do serviço com falha". Por exemplo, aqui com o 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}

Os logs não mostram registro de pouca memória. O teste é realizado em (vários) Nexus One com 2.2 (Froyo FRF91).

Existe alguma maneira de conseguir esse comportamento com meu aplicativo? Reinicialização automática após ser morto?

Ou isso é algo totalmente diferente que apenas se parece com o logcat?

Se precisar de mais informações, basta perguntar e tentarei fornecê-las :-)

questionAnswers(2)

yourAnswerToTheQuestion