Dieser Fehler scheint sporadisch zu geschehen, was merkwürdig ist. Es funktioniert normalerweise gut, aber manchmal schleicht es sich nach oben. Hier ist mein Code, der in einem BroadcastReceiver ist:BadParcelableException - Absturz des BroadcastReceivers absichtlich
public void onReceive(Context context, Intent intent) {
MyCustomResponseMsg message = new MyCustomResponseMsg((MyMessage) intent.getParcelableExtra(MyMessage.EXTRA_MESSAGE_KEY));
// do stuff with the message
setResultCode(Activity.RESULT_OK);
}
Und hier ist die Ausnahme:
01-16 10:05:03.834: ERROR/AndroidRuntime(13533): FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start receiver com.(path-to-broadcast-receiver).MyReqReceiver:
android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.(path-to-my-message).MyMessage
at android.app.ActivityThread.handleReceiver(ActivityThread.java:1805)
at android.app.ActivityThread.access$2400(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:981)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.os.BadParcelableException: ClassNotFoundException when unmarshalling: com.(path-to-my-message).MyMessage
at android.os.Parcel.readParcelable(Parcel.java:1958)
at android.os.Parcel.readValue(Parcel.java:1846)
at android.os.Parcel.readMapInternal(Parcel.java:2083)
at android.os.Bundle.unparcel(Bundle.java:208)
at android.os.Bundle.getParcelable(Bundle.java:1100)
at android.content.Intent.getParcelableExtra(Intent.java:3437)
at com.(path).MyReceiver.onReceive(My ReqReceiver.java:23)
at android.app.ActivityThread.handleReceiver(ActivityThread.java:1794)
... 10 more
Der Fehler scheint auf der getParcelableExtra Linie auftreten. Die "MyMessage" -Klasse (in meinem eigenen Projekt natürlich etwas anderes genannt) existiert tatsächlich; Es ist in einer Bibliothek enthalten. Es funktioniert die meiste Zeit, aber es gibt Zeiten, in denen ich jedes Mal zum Absturz kommen kann, wenn die Sendung empfangen wird.
Ich weiß, das ist nicht viel los, aber ich wollte nur sehen, ob es etwas gibt, was ich anders im Empfänger tun könnte, um das zu erfassen, so dass es keinen Absturz verursacht. Oder wenn es definitiv etwas auf der Seite des Sendens der Sendung ist, dann kann ich mich bei Bedarf darauf konzentrieren. Aber in der Zwischenzeit wollte ich nur sicherstellen, dass dies für meine Zwecke richtig eingerichtet wurde. Ich habe andere ähnliche Posts mit diesem Absturz überprüft, aber ich kann anscheinend keine finden, die diese spezifische Art von Parcelable betreffen, die von der Absicht in einem BroadcastReceiver kommen.
Vielen Dank im Voraus für jede Anleitung zu diesem Thema!
EDIT Hier ist, was der Konstruktor für MyMessage aussieht, wenn nötig:
public MyMessage(Parcel in) {
field1 = in.readInt();
field2 = in.readString();
field3 = in.readString();
}
Ah, die Sinn macht. Ich habe meine Frage so aktualisiert, dass sie tatsächlich enthält, wie der Konstruktor für MyMessage aussieht. Es scheint, als ob dieser Code nur die Standardmethoden "readString()" und "readInt()" verwendet. Neugierig, wenn diese geändert werden sollten? Ich wäre vorsichtig, da diese MyMessage-Klasse an vielen verschiedenen Stellen in unserem Anwendungsframework verwendet wird. Ich hoffe also, dass es eine Lösung gibt, bei der die MyMessage-Klasse nicht berührt wird? Ich werde in der Zwischenzeit tiefer lesen, um mich näher mit dem Prozess zu befassen. – svguerin3
@ svguerin3 Ich aktualisierte meine Antwort, bitte schauen Sie. –
Leider tritt der Absturz trotz des Hinzufügens der Einstellung des ClassLoaders in onReceive für die Absicht immer noch mit derselben BadParcelableException auf. :(Jetzt bin ich wirklich ratlos. Ich schätze Ihre Hilfe mit diesem unabhängig. Irgendwelche anderen Gedanken, durch Zufall? – svguerin3