2017-08-26 139 views
-1

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

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) 

这个异常的可能原因是什么?我试过注册一个空的LocalBroadCastReceiver。这不是因为这个。

感谢

+0

你在manifest.xml中定义了你的广播吗?你可以分享你的代码 – UltimateDevil

+0

它是一个本地广播接收器。我已经在我的片段中初始化了它,但没有在Manifest中定义。 – MobileAppDeveloper

+0

好的,你可以分享代码 – UltimateDevil

回答

2

这是什么异常的可能原因是什么?基于the source code to LocalBroadcastManager

,如果这样看来,你在呼唤registerReceiver(),其中第一个参数(BroadcastReceiver实例)是null。稍后,您打电话sendBroadcast()Intent匹配IntentFilter来自有缺陷的registerReceiver()调用。当主应用程序线程触发LocalBroadcastManager内部的Handler传送广播时,它会失败,因为它不能在null上调用onReceive()

FWIW,我刚刚提交了an issue在您打电话给registerReceiver()的时间点检测到这一点。

+0

谢谢。它有帮助。 – MobileAppDeveloper

相关问题