我的应用程序包括通过广播接收位置的服务,还有一个活动可以注册这些相同的广播。间歇性地,显然只在某些设备上,活动随之而来:
class java.lang.RuntimeException
Msg: Error receiving broadcast Intent { act=com.company.app.ACTION_LOCATION_CHANGED flg=0x10 (has extras) } in com.company.app.library.activity.MyActivity$LocationReceiver@40f45bb8
我无法使用调试器来查看应用程序的状态,因为我无法重现此错误,所以我依赖于分析日志。
这个例外究竟意味着什么?即接收它有什么问题?
答案 0 :(得分:33)
这意味着onReceive方法中存在未捕获的异常。 看看会导致它的原因......如果没有代码并且没有更详细的堆栈跟踪,很难说。
答案 1 :(得分:10)
另一种可能性是,日志中还有更多信息。
示例:我刚刚遇到此错误,日志数据如下所示:
java.lang.RuntimeException: Error receiving broadcast Intent { act=com.example.bluetooth.le.ACTION_DATA_AVAILABLE flg=0x10 (has extras) } in myAppName.BlunoLibrary$5@41f792f8
at LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:778)
at Handler.handleCallback(Handler.java:733)
at Handler.dispatchMessage(Handler.java:95)
...bunch of internal android stuff...
Caused by: java.lang.NullPointerException
at myAppName.MainActivity.onSerialReceived(MainActivity.java:96) <-- hey look, my code screwed up!
at myAppName.BlunoLibrary$5.onReceive(BlunoLibrary.java:327)
at LoadedApk$ReceiverDispatcher$Args.run(LoadedApk.java:768)
at Handler.handleCallback(Handler.java:733)
...bunch of other normal-looking callstack stuff...
由&#34;引起的次要&#34;给了一个非常直接的位置,我犯了一个错误。
答案 2 :(得分:3)
另一个可能的原因是您没有在活动的onPause()方法中取消注册接收器。