Ich versuche, einen Dienst in Android für einige grundlegende Datenbankoperationen zu verwenden, aber aus irgendeinem Grund habe ich eine Aktivität verloren ServiceConnection Fehler. Ich werde die vollständige Logcat-Anzeige unten veröffentlichen.
Ich muss denselben Dienst in mehreren Aktivitäten verwenden, daher habe ich eine Superklasse erstellt, um alle Serviceaufgaben zu bearbeiten. Es sieht so aus:
%Vor%Die Idee ist, dass sich die Kinderaktivität niemals darum kümmern muss, ob sie mit dem Dienst verbunden ist oder nicht, die Superklasse sollte dafür sorgen, dass Daten zum Dienst und zurück zum Kind gelangen.
Die Logcat-Punkte doBindService () in onCreate () - & gt; bindService (new Intent (this, global.FetchService.class), Verbindung, Context.BIND_AUTO_CREATE); als die Zeile, die den Fehler verursacht. Der Dienst wird jedoch erst nach länger als 15 Sekunden aktiver Aktivität geleert. Daher sollte onCreate () nicht aufgerufen werden.
Hier ist das Logcat:
%Vor%Jede Hilfe wird sehr geschätzt.
Wenn Sie doBindService()
in onCreate()
aufrufen, sollten Sie do UnbindService()
in onDestroy()
hinzufügen.
Es funktioniert für mich.
Sie erhalten diesen Fehler, weil der Dienst, den Sie mit Aktivität binden, nicht gestoppt wird, wenn diese Aktivität zerstört wird. Deshalb ist Ihr Dienst immer noch im Speicher vorhanden und verbraucht Ressourcen, was nichts tut.
Um dieses Problem zu lösen, rufen Sie doBindService()
in onCreate()
und doUnbindService()
in onDestroy()
Tags und Links memory-leaks android android-service superclass