2013-11-25 7 views
5

Mit Android 4.4 Ich finde, dass einige Benutzer den notificationListenerService haben, den ich implementiert habe, werde gerade aufhören zu arbeiten. Ich habe das auch selbst gesehen.NotificationListenerService stoppte und kann ohne Neustart nicht neu gestartet werden

Ich habe es noch nie geschafft Logcats zu erfassen, aber selbst wenn ich in den Benachrichtigungsbereich gehe und den Benachrichtigungszugriff aus- und wieder einschalte, hilft das nicht.

Gibt es etwas, das dazu führen kann? Ich bin mir nicht sicher, ob meine App abstürzt und dies verursacht, aber selbst wenn es so scheint, ist der einzige Weg, den Hörer neu zu starten, ein Neustart des Telefons. Gibt es eine andere Möglichkeit, um zu starten, dass meine App Benachrichtigungen vom Listener-Dienst erhält?

Ich bekomme auch Berichte von Benutzern, die dieses Problem beim Aktualisieren der Version der App erhalten.

Ich habe versucht, Protokolle in die onCreate/onDestroy-Methode zu setzen, um zu sehen, ob etwas geloggt wird, wenn es aufhört, aber die onUnbind, onDestroy aufgerufen werden, aber nichts für diese Methoden eingegeben wird, also denke ich, dass sie nicht bekommen aufgerufen, sobald es gestoppt ist.

edit: ich einen Fehlerbericht erfasst danach aussieht und der interessante Teil des Stammes geschehen sein:

12-30 15:33:58.731 16194 16194 W ContextImpl: Calling a method in the system process without a qualified user: android.app.ContextImpl.sendOrderedBroadcast:1192 android.app.ContextImpl.sendOrderedBroadcast:1183 android.content.ContextWrapper.sendOrderedBroadcast:390 com.android.settings.applications.ProcessStatsDetail.checkForceStop:314 com.android.settings.applications.ProcessStatsDetail.onResume:108 
12-30 15:33:58.741 780 780 V NotificationService: disabling notification listener for user 0: ComponentInfo{com.example.android.navigationdrawerexample/com.example.android.navigationdrawerexample.NotificationListener} 
12-30 15:33:58.741 780 780 V NotificationService: disabling notification listener for user 0: ComponentInfo{lovetere.flashme/lovetere.flashme.accessibilityservice.ServicePostKitKat} 
12-30 15:33:58.741 780 780 V NotificationService: enabling notification listener for user 0: ComponentInfo{com.example.android.navigationdrawerexample/com.example.android.navigationdrawerexample.NotificationListener} 
12-30 15:33:58.741 780 780 V NotificationService: enabling notification listener for user 0: ComponentInfo{lovetere.flashme/lovetere.flashme.accessibilityservice.ServicePostKitKat} 
12-30 15:33:58.751 1171 1171 D MyApp:NotificationListener: [NotificationListener] onDestroy 

So sieht es aus wie eine Warnung ist, die in Anhalten der Dienst dann los ist und neu zu starten (es passiert mit meiner app und auch die anderen app, die ich installiert habe, den die Benachrichtigung Zugang Blick auf zwei verwendet, die zu stoppen sind)

wirklich nicht sicher, was ich tun kann, stoppen dies zu stoppen

Antwort

1

Auf diese Weise kann es neu zu starten, aber es muss über 10s

private void toggleNotificationListenerService() { 
     PackageManager pm = getPackageManager(); 
     pm.setComponentEnabledSetting(new ComponentName(this, com.xinghui.notificationlistenerservicedemo.NotificationListenerServiceImpl.class), 
       PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP); 

     pm.setComponentEnabledSetting(new ComponentName(this, com.xinghui.notificationlistenerservicedemo.NotificationListenerServiceImpl.class), 
       PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 

    } 

Autor: Hugo

-Link: https://www.zhihu.com/question/33540416/answer/113706620