Вызов метода в системном процессе без ошибки пользователя
Я использую службу прослушивателя уведомлений в android 4.4, и я сталкиваюсь с ошибкой, из-за которой мое приложение перестает получать уведомления.
Это довольно случайный случай, но когда это происходит, я вижу:
12-31 01:40:44.080 21680-21680/? 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
в журналах.
Я даже могу воссоздать это, просто введя раздел "статистика процесса" инструментов разработчика на телефоне. Как только я выбираю приложение, которое использует прослушиватель уведомлений, оно выдает это предупреждение и отвязывает и разрушает службу, и когда она воссоздается, она не всегда снова принимает события.
Я не уверен, почему это произойдет, может ли кто-нибудь пролить свет?
Ответы
Ответ 1
1) NotificationListenerService запускается системой, а код sendOrderedBroadcast выдает предупреждение, если он был вызван системным процессом (здесь)
2) Это всего лишь предупреждение. Вероятно, в вашем коде произошел сбой где-то еще. Когда сбой NotificationListenerService
, Android не перезапускает его, если вы не переключите разрешение или не перезагрузите телефон. Ищите еще один сбой и попробуйте любой из этих методов, чтобы перезапустить его, если он есть. При запуске он будет не работать.