2010-03-07 2 views
6

In der 1.6 API gibt es eine Möglichkeit, sicherzustellen, dass die OnStart() -Methode eines Dienstes aufgerufen wird, nachdem der Dienst wegen Speicherdruck beendet wird ? Aus den Protokollen scheint es, dass der "Prozess", zu dem der Dienst gehört, neu gestartet wird, der Dienst selbst jedoch nicht. Ich habe einen Log.d() - Aufruf in der onStart() -Methode platziert, und dies wird nicht erreicht."Zeitplan Neustart des abgestürzten Dienstes", aber kein Aufruf von onStart() folgt

Um meinen Dienst unter Speicherdruck zu testen, spawne ich ihn aus einer Aktivität, dann starten Sie den Webbrowser und besuchen Sie einige Javascript-schwere Websites wie Slashdot, bis mein Dienst getötet wird. Die logcat lautet:

03-07 16:44:13.778: INFO/ActivityManager(52): Process com.kostmo.charbuilder.full (pid 2909) has died. 
03-07 16:44:13.778: WARN/ActivityManager(52): Scheduling restart of crashed service com.kostmo.charbuilder.full/com.kostmo.charbuilder.DownloadImagesService in 5000ms 
03-07 16:44:13.778: INFO/ActivityManager(52): Low Memory: No more background processes. 
03-07 16:44:13.778: ERROR/ActivityThread(52): Failed to find provider info for android.server.checkin 
03-07 16:44:13.778: WARN/Checkin(52): Can't log event SYSTEM_SERVICE_LOOPING: java.lang.IllegalArgumentException: Unknown URL content://android.server.checkin/events 
03-07 16:44:18.908: INFO/ActivityManager(52): Start proc com.kostmo.charbuilder.full for service com.kostmo.charbuilder.full/com.kostmo.charbuilder.DownloadImagesService: pid=3560 uid=10027 gids={3003, 1015} 
03-07 16:44:19.868: DEBUG/ddm-heap(3560): Got feature list request 
03-07 16:44:20.128: INFO/ActivityThread(3560): Publishing provider com.kostmo.charbuilder.full.provider.character: com.kostmo.charbuilder.provider.ImageFileContentProvider 
+2

'onCreate()' wird aufgerufen, nicht 'onStart()', da niemand einen Start oder eine Bindung angefordert hat. Sie müssen den Dienst zu diesem Zeitpunkt herunterfahren (oder anderweitig starten, falls erforderlich). –

Antwort

6

Wie oben von Chistopher Kommentar enthüllt, obwohl das Protokoll „Scheduling restart of crashed service“ vorgibt zu sein, das bedeutet nicht, dass tatsächlich die onStart() Methode aufgerufen wird. Allerdings wird onCreate() in der Tat aufgerufen, und Ihre Anwendung kann onStart() von dort aufrufen.

Verwandte Themen