在没有合格用户的情况下调用系统进程中的方法错误。

19

我正在使用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
这不是由于ContextImpl的警告引起的(如果您想要摆脱警告,请使用sendBroadcastAsUser进行重写 - 请参见https://dev59.com/gGQo5IYBdhLWcg3wfPbK#18224021)。 - pevik
2个回答

8

1) NotificationListenerService是由系统启动的,如果它是由系统进程调用的,则sendOrderedBroadcast代码会抛出警告(这里)。

2) 不过,那只是一个警告。你的代码中可能还有其他崩溃。当NotificationListenerService崩溃时,Android不会重新启动它,除非您切换权限或重启手机。如果发生了这种情况,请查找其他崩溃并尝试使用其中任何一种方法重新启动它。自己启动它不会起作用。


但是,这是否应该导致手机上安装的每个其他通知监听器应用程序解除绑定并被销毁和重新创建,因为这就是我看到的情况。我已经搜索了错误报告,但找不到任何崩溃参考,除了这个。 - Andrew
那会对其他通知监听器产生什么影响?无论如何,这只是一个警告。我怀疑你的服务在其他地方崩溃了。 - Gabe
“那会影响其他通知监听器吗?” - 不仅是我的服务被解除绑定和销毁,每个使用监听器服务的应用程序都会受到影响。我可以在日志中看到其他人编写的其他应用程序也在解除绑定并停止和重新启动。这让我想到,如果它们中的任何一个崩溃,它们都会重新启动,这听起来非常奇怪。 - Andrew
没有关于那个警告的代码会导致这种情况发生。错误一定是在别处。 - Gabe

0

检查您的AIDL包名,对于我来说,客户端和服务器中的包名不匹配。希望这能帮助到有需要的人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接