ServiceConnectionLeaked in Android

8

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.

    
MrMannWood 02.09.2013, 14:48
quelle

4 Antworten

9

Wenn Sie doBindService() in onCreate() aufrufen, sollten Sie do UnbindService() in onDestroy() hinzufügen.

Es funktioniert für mich.

    
BinqiangSun 20.12.2014, 14:05
quelle
3

Sie rufen doBindService() sowohl in onCreate() als auch in onResume() an und versuchen, sie nur in onResume() aufzurufen, um Ihren Aufruf an doUnbindService() in onPause()

anzupassen     
bclymer 02.09.2013 14:50
quelle
1

Sie müssen die gute Referenz für die Aktivität verwenden getActivity () gibt das aktuelle zurück, und Sie müssen auf demjenigen, das die Bindung gemacht hat, die Bindung lösen

Hier habe ich das Problem behoben:

%Vor%     
Dounaka 22.05.2014 03:31
quelle
1

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

auf     
vsvankhede 16.09.2015 06:15
quelle