web-dev-qa-db-ja.com

致命的な例外:Android.app.RemoteServiceException:Android.os.Handler.dispatchMessageでブロードキャストを配信できません

Androidアプリケーションでブロードキャストメッセージを使用しています(io.socketから[アクティビティ]ページにブロードキャストメッセージを送信しています)。一部のデバイスでは、Samsung SM-G950Fおよび- SM-A520Fエラーが発生しました "Fatal Exception: Android.app.RemoteServiceException: can't deliver broadcast "。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)
16
SHIDHIN.T.S

私はアプリで同じ問題に直面していました。コンテキストの代わりに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);

これが役立つことを願っています。ありがとう! :)

6
Asheesh

私はまったく同じことを、ほぼ同じ時間に、同じデバイスで体験しました。問題は最終的に私がサポートしているアプリに関連していましたが、サムスンは問題を引き起こし始めた何らかのタイプのアップデートを押し出したと思います。 10月の後半まで、アプリにはこの問題はありませんでした。どの放送が問題を引き起こしているのかわからなかったので、私は気が狂っていました。

ユーザーのフィードバックに基づいて、最終的に絞り込み、次の変更を行いました。

1)アプリを調べて、インテントに使用されるすべてのカスタム「アクション」文字列にアプリのパッケージ名が含まれていることを確認しました。

2)Context :: sendBroadcast()の使用からLocalBroadcastManager :: sendBroadcast()に切り替えました。

ここで別の投稿で私の完全な回答を見ることができます

3
klaust