In android gibt es eine Möglichkeit zu prüfen ob der Dienst ist bereits gebunden, bevor Sie eine Bindung zu ihm?
Habe ich mehrere fragment-Aktivitäten und einer von Ihnen ist gebunden an einen Dienst, der ständig die Nachrichten empfangen. Während ich da war der Wechsel zwischen Tätigkeiten an einem Punkt bekomme ich folgende Fehlermeldung. Ich weiß nicht, wie das Listenelement geklickt wird, wo die service
wird begrenzt. In anyways ich Frage mich, ob ich hinzufügen können, eine überprüfung, bevor ich zu binden, um zu sehen, wenn die service
ist bereits ausgeführt und angeschlossen werden.
04-08 10:34:54.674: E/ActivityThread(21091): Activity com.MyApp.MyFirstClass has leaked ServiceConnection com.MyApp.MyFirstClass$2@42c84158 that was originally bound here
04-08 10:34:54.674: E/ActivityThread(21091): android.app.ServiceConnectionLeaked: Activity com.MyApp has leaked ServiceConnection com.MyApp.MyFirstClass$2@42c84158 that was originally bound here
04-08 10:34:54.674: E/ActivityThread(21091): at android.app.LoadedApk$ServiceDispatcher.<init>(LoadedApk.java:974)
04-08 10:34:54.674: E/ActivityThread(21091): at android.app.LoadedApk.getServiceDispatcher(LoadedApk.java:868)
04-08 10:34:54.674: E/ActivityThread(21091): at android.app.ContextImpl.bindServiceCommon(ContextImpl.java:1960)
04-08 10:34:54.674: E/ActivityThread(21091): at android.app.ContextImpl.bindService(ContextImpl.java:1943)
04-08 10:34:54.674: E/ActivityThread(21091): at android.content.ContextWrapper.bindService(ContextWrapper.java:529)
04-08 10:34:54.674: E/ActivityThread(21091): at com.MyApp.MyFirstClass.onItemClick(MyFirstClass.java:1140)
04-08 10:34:54.674: E/ActivityThread(21091): at android.widget.AdapterView.performItemClick(AdapterView.java:313)
04-08 10:34:54.674: E/ActivityThread(21091): at android.widget.AbsListView.performItemClick(AbsListView.java:1529)
04-08 10:34:54.674: E/ActivityThread(21091): at android.widget.AbsListView$PerformClick.run(AbsListView.java:3560)
04-08 10:34:54.674: E/ActivityThread(21091): at android.widget.AbsListView$3.run(AbsListView.java:5277)
04-08 10:34:54.674: E/ActivityThread(21091): at android.os.Handler.handleCallback(Handler.java:733)
04-08 10:34:54.674: E/ActivityThread(21091): at android.os.Handler.dispatchMessage(Handler.java:95)
04-08 10:34:54.674: E/ActivityThread(21091): at android.os.Looper.loop(Looper.java:146)
04-08 10:34:54.674: E/ActivityThread(21091): at android.app.ActivityThread.main(ActivityThread.java:5635)
04-08 10:34:54.674: E/ActivityThread(21091): at java.lang.reflect.Method.invokeNative(Native Method)
04-08 10:34:54.674: E/ActivityThread(21091): at java.lang.reflect.Method.invoke(Method.java:515)
04-08 10:34:54.674: E/ActivityThread(21091): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
04-08 10:34:54.674: E/ActivityThread(21091): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
04-08 10:34:54.674: E/ActivityThread(21091): at dalvik.system.NativeStart.main(Native Method)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nicht sicher, ob Sie jemals finden eine adäquate Antwort, aber ich habe gerade eine wrapper-Klasse, die ich genannt
ExtendedServiceConnection
was im Grunde hatte die Fähigkeit zu verfolgen und zu prüfen, ob es Dienst gebunden war.Nur ein bisschen sauberer halten eine Globale Konstanten.
Nutzung
Gibt es keinen direkten Weg, dies zu tun, aber Sie tun können, durch
Unter service-Objekt als statisch und binden-service durch
im obigen code Konstant.mService ist statisch
so, jetzt von überall können Sie überprüfen, service binden oder nicht, die von folgenden
im obigen Beispiel Konstant.mService ist-Objekt auf Ihrer service-Klasse
Sollte es nicht sein, einige verbindungen zum service, dass Sie verliert. Für jeden bindService() muss unbindService() - mit der gleichen Absicht. Ich weiß, beste Weg, um zu binden, in der onResume () - Methode (nicht in onCreate) und unbind in onPause().