2013-11-25 12 views
5

Z Androidem 4.4 Zauważyłem, że niektórzy użytkownicy mają powiadomienieListenerService, które zaimplementowałem, przestaną działać. Sam też to widziałem.NotificationListenerService zatrzymuje się i nie można go ponownie uruchomić bez ponownego rozruchu.

Nigdy nie udało mi się przechwycić żadnych logów w czasie, kiedy to się stało, ale nawet wejście do sekcji dostępu do powiadomień i wyłączenie i powrót do dostępu do powiadomień nie pomaga.

Czy jest coś, co może spowodować, że tak się stanie. Nie jestem pewien, czy moja aplikacja się zawiesza i powoduje to, ale nawet jeśli wydaje się, że jedynym sposobem na ponowne uruchomienie odbiornika jest ponowne uruchomienie telefonu. Czy istnieje inny sposób uruchamiania powiadomień o otrzymywaniu aplikacji z usługi odbiorcy?

Dostaję również raporty o tym, że użytkownicy otrzymują ten problem podczas aktualizowania wersji aplikacji.

Próbowałem wstawiania dzienników do metody onCreate/onDestroy, aby zobaczyć, czy coś się zaloguje, gdy się zatrzyma, ale nazywa się onUnbind, onDestroy, ale nic nie jest wpisane dla żadnej z tych metod, więc myślę, że nie otrzymują wywoływana, gdy jest zatrzymana.

edit: Zdobyłem raport o błędzie po to się stało i interesująca część dzienniku zapowiada się:

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 

Więc wygląda na to, że to ostrzeżenie, które jest następnie wchodząc zatrzymywania usługi i ponowne uruchomienie go (to się dzieje z moim app, a także innych aplikacji mam zainstalowane, która używa dostęp powiadamiania patrząc na dwóch, które są zatrzymanie)

Naprawdę nie wiem, co mogę zrobić, aby zatrzymać ten zatrzymanie

Odpowiedz

1

ten sposób można go ponownie uruchomić, ale potrzebuje około 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

Powiązane problemy