2012-04-09 9 views
0

Dies ist mein erstes Mal experimentieren mit Android-Diensten, so dass ich ein wenig verloren bin. Ich entwickle eine Anwendung, die einen Dienst benötigt, um jederzeit im Hintergrund zu laufen. Dieser Service wird von einem onclick-Ereignis in der Hauptaktivität initialisiert. Um den Dienst zu starten, verwende ich den folgenden Code:Android-Dienst Herunterfahren

Intent Test = new Intent(this, testService.class); 
startService(Test); 

Im Dienst habe ich im Grunde zwei Dinge. In der Methode onCreate initialisiere ich einen Timer und alle 30 Minuten öffnet er einen neuen Thread und prüft, ob der Server neue Daten hat. Bei den onStart-Methoden registriere ich einen Receiver.

Nach ein paar Stunden wird der Dienst getötet, ist es möglich, dass der Garbage Collector den Dienst entfernt? Mein Verdacht ist, dass die Art, wie ich den Dienst initialisiere, immer noch an den Hauptprozess der Aktivität gebunden ist. Was kann ich tun, um sicherzustellen, dass der Dienst weiterhin ausgeführt wird?

Dank

Antwort

1

Sie benötigen Alarmmanager statt Timer für diese Aufgabe.

+0

Testen Sie es und es scheint, dass es funktioniert. Danke für Ihre Hilfe. – CodePorter

1

OS kann jede normale Priorität oder benutzerdefinierten Hintergrunddienst beenden, wenn OS Ressourcen benötigt. Wenn Sie also möchten, dass Ihr Dienst immer ausgeführt wird, können Sie den Hintergrunddienst in den Vordergrund stellen oder wenn Sie Ihr Telefon nicht zulassen möchten im Sleep-Modus können Sie Wake-Lock verwenden ... durch diese können Sie Ihren Service auf immer im Modus einstellen ..... Danke