I'm having app crash on resume because of Unmarshalling exception. I've checked all the Serializables have constructor with no parameters and even checked all the serializables using ObjectStream (save to file and load from file). How can i understand actual class type for parcelable offset that cause exception:
Parcel android.os.Parcel@42209460: Unmarshalling unknown type code 2131165303 at offset 3748 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2080) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2105) at android.app.ActivityThread.access$600(ActivityThread.java:136) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1201) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4876) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:804) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:571) at com.kdgdev.xtension.core.XtensionMain.main(XtensionMain.java:91) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@42209460: Unmarshalling unknown type code 2131165303 at offset 3748 at android.os.Parcel.readValue(Parcel.java:2032) at android.os.Parcel.readSparseArrayInternal(Parcel.java:2255) at android.os.Parcel.readSparseArray(Parcel.java:1687) at android.os.Parcel.readValue(Parcel.java:2022) at android.os.Parcel.readMapInternal(Parcel.java:2226) at android.os.Bundle.unparcel(Bundle.java:223) at android.os.Bundle.getSparseParcelableArray(Bundle.java:1232) at com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWindow.java:1690) at android.app.Activity.onRestoreInstanceState(Activity.java:999) at com.actionbarsherlock.app.SherlockFragmentActivity.onRestoreInstanceState(Unknown Source) at name.myname.android.app.ui.MainActivity.onRestoreInstanceState(Unknown Source) at android.app.Activity.performRestoreInstanceState(Activity.java:971) at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1130) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2058) ... 12 more
Saved data consists of Bundle
s and Serializable
s and all of them look good.
I'm going to do the next:
try { // unmarshalling } catch (Throwable t) { // look offset }
How can i understand what type is actually for Parcelable offset?
There's some rules for write and read parcelables.
1- Be careful about type mismatch. If you write int, don't try to read long etc.
2- Be careful about order of writes and reads. Objects must be at the same sort order when reading and writing.
Both of these can cause "Unmarshalling unknown type code".
It's because of Proguard obfuscation - it processed Parcelable. solution: Proguard causing RuntimeException (Unmarshalling unknown type code) in Parcelable class
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With