Calling a method in the system process without a q

2019-06-14 22:40发布

问题:

I'm using the notification listener service in android 4.4 and I'm coming across an error that causes my app to stop getting notifications posted.

It's fairly random, but when it happens I'm seeing:

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

in the logs. I can even recreate this by just entering the "process stats" section of the developer tools on the phone. As soon as I select an app that uses the notification listener the puts up this warning and unbinds and destroys the service and when it recreates is it doesn't always pick up on events again.

I'm not sure why this would happen, can anyone shed any light?

回答1:

1) the NotificationListenerService is started by the system and the code for sendOrderedBroadcast throws a warning if it was called by the system process (here)

2) That is just a warning though. There is probably a crash somewhere else in your code. When a NotificationListenerService crashes, Android doesn't restart it unless you toggle the permission or restart your phone. Look for another crash and try either of those methods to restart it if it has. Starting it yourself will not work.