BroadcastReceiver中NullPointerException的原因

时间:2017-08-26 18:17:19

标签: android nullpointerexception broadcastreceiver

我的代码中出现以下异常。当应用程序在后台运行很长时间并且可能被操作系统杀死时,就会发生这种情况。之后,当我恢复应用程序时,它会抛出以下异常。

Fatal Exception: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.content.BroadcastReceiver.onReceive(android.content.Context, android.content.Intent)' on a null object reference
   at android.support.v4.content.LocalBroadcastManager.executePendingBroadcasts(Unknown Source)
   at android.support.v4.content.LocalBroadcastManager.access$000(Unknown Source)
   at android.support.v4.content.LocalBroadcastManager$1.handleMessage(Unknown Source)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:145)
   at android.app.ActivityThread.main(ActivityThread.java:6872)
   at java.lang.reflect.Method.invoke(Method.java)
   at java.lang.reflect.Method.invoke(Method.java:372)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

此异常的可能原因是什么?我已经尝试注册一个null LocalBroadCastReceiver。不是因为这个原因。

由于

1 个答案:

答案 0 :(得分:3)

  

此异常的可能原因是什么?

根据the source code to LocalBroadcastManager,如果看起来您正在调用registerReceiver(),则第一个参数(BroadcastReceiver实例)为null。之后,您拨打sendBroadcast()的{​​{1}}与有缺陷的Intent来电中的IntentFilter相匹配。当主应用程序线程触发registerReceiver()内的Handler以传送广播时,它会失败,因为它无法在LocalBroadcastManager上调用onReceive()

FWIW,我刚刚提交an issue,以便在您拨打null的时间点检测到这一点。