Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 致命异常:android.app.RemoteServiceException:can';t在android.os.Handler.dispatchMessage上发送广播_Java_Android_Broadcastreceiver_Android Broadcast_Android Broadcastreceiver - Fatal编程技术网

Java 致命异常:android.app.RemoteServiceException:can';t在android.os.Handler.dispatchMessage上发送广播

Java 致命异常:android.app.RemoteServiceException:can';t在android.os.Handler.dispatchMessage上发送广播,java,android,broadcastreceiver,android-broadcast,android-broadcastreceiver,Java,Android,Broadcastreceiver,Android Broadcast,Android Broadcastreceiver,我在android应用程序上使用广播消息(从io.socket我将广播消息发送到我的活动页面)。在一些设备上,三星SM-G950F和SM-A520F出现错误“致命异常:android.app.RemoteServiceException:无法发送广播”。我在Fabric crashlytics上遇到了这个错误,我也无法重现这个问题。这是我从Fabric那里得到的日志 Fatal Exception: android.app.RemoteServiceException: can't del

我在android应用程序上使用广播消息(从io.socket我将广播消息发送到我的活动页面)。在一些设备上,三星SM-G950FSM-A520F出现错误“
致命异常:android.app.RemoteServiceException:无法发送广播
”。我在Fabric crashlytics上遇到了这个错误,我也无法重现这个问题。这是我从Fabric那里得到的日志

   Fatal Exception: android.app.RemoteServiceException: can't deliver broadcast
   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1813)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:154)
   at android.app.ActivityThread.main(ActivityThread.java:6776)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1520)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1410)

我用同样的设备在同样的时间经历了同样的事情。问题最终与我支持的应用程序有关,但我认为三星推出了某种类型的更新,开始引发问题。在10月下旬之前,该应用程序从未出现过这个问题。这让我抓狂,因为我无法找出是哪个广播引发了这个问题

根据用户反馈,我最终缩小了范围,并做了以下更改:

1) 我浏览了该应用程序,并确保所有用于意图的自定义“操作”字符串都包含该应用程序的包名

2) 我从使用Context::sendBroadcast()切换到LocalBroadcastManager::sendBroadcast()


我的应用程序也面临同样的问题,我所做的是使用LocalBroadcastManager而不是上下文。Android文档还建议使用LocalBroadcastManager发送应用内广播接收器

//register your receiver like this
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver,
          new IntentFilter("custom-event-name"));

// unregister  like this
LocalBroadcastManager.getInstance(this).unregisterReceiver(mMessageReceiver);

// broadcastlike this
LocalBroadcastManager.getInstance(this).sendBroadcast(intent);

希望这会有所帮助。谢谢!:)

当服务尝试发送广播时,系统似乎正在销毁您的广播接收器活动/片段。请看源代码第498行。这似乎是一个随机的问题。一个可能的解决方法是在片段/活动的onResume()中注册广播接收器,并在onPause()中注销广播接收器。我甚至没有LocalBroadcastManager的用法,但我最近遇到了这个错误。不过,这是非常罕见的错误。到目前为止只发生过一次,在装有Android 9的OnePlus 5T上。。。你知道为什么会发生这种事吗?@android开发者同样的事情也发生在我身上。。你找到解决办法了吗?@Kamwave不知道为什么会这样。我只是选择忽略它,就像我见过的其他非常罕见的奇怪案例一样。我认为,一般来说,如果你看到纯中文设备的问题,你可以忽略它们,因为你几乎无法对此采取任何措施。请参见此处:,和此处:。也请考虑主演这个问题。中国制造商破坏应用程序真的很糟糕(而且他们默认这么做)。也看到了这些(虽然它们很少见),但只有在运行Android Pie的OnePlus设备上。这是不可改变的。