致命异常:android.app.RemoteServiceException:无法在 android.os.handler.dispatchMessage 上提供广播

我正在我的Android应用程序上使用广播消息(从io.socket,我正在向我的活动页面发送广播消息)。在某些设备上,三星SM-G950FSM-A520F我收到错误“”。我在Fabric crashlytics上遇到了这个错误,我也无法重现这个问题。这是我从Fabric获得的日志,Fatal Exception: android.app.RemoteServiceException: can't deliver broadcast

   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)

答案 1

我的应用程序也遇到了同样的问题,我所做的是使用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);

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


答案 2

我经历了完全相同的事情,大约在同一时间,使用相同的设备。问题最终与我支持的应用程序有关,但我认为三星推出了某种类型的更新,开始触发问题。在10月下旬之前,该应用程序从未出现过此问题。这让我发疯,因为我无法弄清楚哪个广播触发了这个问题。

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

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

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

你可以在这里的另一篇帖子上看到我的完整答案


推荐