J'ai un service qui est également LocationListener. Lors d'un nouvel événement de localisation, il réalise une sorte de réseau qui peut prendre du temps; C'est pourquoi il est implémenté en tant que AsyncTask.Processus est mort/Planification redémarrage du service écrasé
Souvent, je vois dans le journal sur le périphérique réel:
03-29 17:02:20.847 D/dalvikvm( 235): GC_FOR_ALLOC freed 961K, 29% free 10234K/14215K, paused 26ms
03-29 17:02:20.855 I/DemoService( 555): DiyScheduer.onStart
03-29 17:02:20.855 I/ggheart ( 555): onStart
03-29 17:02:21.097 V/PhoneStatusBar( 235): setLightsOn(true)
03-29 17:02:21.121 W/IInputConnectionWrapper(11244): showStatusIcon on inactive InputConnection
03-29 17:02:21.277 I/ActivityManager( 161): Process android.process.media (pid 11298) has died.
03-29 17:02:22.058 I/ActivityManager( 161): Process com.idavydov.myapp (pid 11051) has died.
03-29 17:02:22.066 I/WindowManager( 161): WIN DEATH: Window{41b05850 com.idavydov.myapp/com.idavydov.myapp.MyActivity paused=false}
03-29 17:02:22.074 W/ActivityManager( 161): Scheduling restart of crashed service com.idavydov.myapp/.MyService in 5000ms
Habituellement, il arrive après une grande application est chargée.
La raison de ce manque de mémoire? Dans ce cas pourquoi il n'y a pas un tel type de message dans le journal?
P.S. Dans une autre question, j'ai vu l'explication que la raison est que la tâche prend trop de temps. Mais j'ai ajouté le code suivant à mon AsyncTask et je n'ai pas pu reproduire le crash dans l'émulateur.
protected Boolean doInBackground(...) {
...
long time = System.currentTimeMillis();
while (System.currentTimeMillis() - time < 11 * 1000);
....
}
Merci
Votre processus meurt chaque fois que vous exécutez votre doInBackground? – Orest
Non. Seulement parfois. –