我的代码中出现以下异常。当应用程序在后台运行很长时间并且可能被操作系统杀死时,就会发生这种情况。之后,当我恢复应用程序时,它会抛出以下异常。
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。不是因为这个原因。
由于
答案 0 :(得分:3)
此异常的可能原因是什么?
根据the source code to LocalBroadcastManager
,如果看起来您正在调用registerReceiver()
,则第一个参数(BroadcastReceiver
实例)为null
。之后,您拨打sendBroadcast()
的{{1}}与有缺陷的Intent
来电中的IntentFilter
相匹配。当主应用程序线程触发registerReceiver()
内的Handler
以传送广播时,它会失败,因为它无法在LocalBroadcastManager
上调用onReceive()
。
FWIW,我刚刚提交an issue,以便在您拨打null
的时间点检测到这一点。