恢复时解组未知类型代码异常 [英] Unmarshalling unknown type code exception while resuming
问题描述
我有一个应用程序,我在其中获得了带有两个片段的 tablayout,该应用程序运行良好,但是当我使用菜单按钮关闭应用程序并使用其他应用程序一段时间后,当我恢复我的应用程序时,它崩溃并出现以下异常
I have an application in which i got tablayout with two fragments, the app works perfectly fine but when i close app using menu button and use other apps for a while and when i resume my app it crashes with the following exception
致命异常:主要进程:com.example.com,PID:5674java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.example.com/com.example.ui.activity.MainActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@9095b3a: Unmarshalling unknown type code 3801188 at偏移量 4392在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2426)在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)在 android.app.ActivityThread.-wrap11(ActivityThread.java)在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)在 android.os.Handler.dispatchMessage(Handler.java:102)在 android.os.Looper.loop(Looper.java:148)在 android.app.ActivityThread.main(ActivityThread.java:5443)在 java.lang.reflect.Method.invoke(Native Method)在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)引起:java.lang.RuntimeException: Parcel android.os.Parcel@9095b3a: Unmarshalling unknown type code 3801188 at offset 4392在 android.os.Parcel.readValue(Parcel.java:2340)在 android.os.Parcel.readArrayMapInternal(Parcel.java:2614)在 android.os.BaseBundle.unparcel(BaseBundle.java:221)在 android.os.Bundle.getSparseParcelableArray(Bundle.java:856)在 com.android.internal.policy.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2033)在 android.app.Activity.onRestoreInstanceState(Activity.java:1008)在 android.app.Activity.performRestoreInstanceState(Activity.java:963)在 android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1186)在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2399)在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490)在 android.app.ActivityThread.-wrap11(ActivityThread.java)在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354)在 android.os.Handler.dispatchMessage(Handler.java:102)在 android.os.Looper.loop(Looper.java:148)在 android.app.ActivityThread.main(ActivityThread.java:5443)在 java.lang.reflect.Method.invoke(Native Method)在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
FATAL EXCEPTION: main Process: com.example.com, PID: 5674 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.com/com.example.ui.activity.MainActivity}: java.lang.RuntimeException: Parcel android.os.Parcel@9095b3a: Unmarshalling unknown type code 3801188 at offset 4392 at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2426) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5443) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) Caused by: java.lang.RuntimeException: Parcel android.os.Parcel@9095b3a: Unmarshalling unknown type code 3801188 at offset 4392 at android.os.Parcel.readValue(Parcel.java:2340) at android.os.Parcel.readArrayMapInternal(Parcel.java:2614) at android.os.BaseBundle.unparcel(BaseBundle.java:221) at android.os.Bundle.getSparseParcelableArray(Bundle.java:856) at com.android.internal.policy.PhoneWindow.restoreHierarchyState(PhoneWindow.java:2033) at android.app.Activity.onRestoreInstanceState(Activity.java:1008) at android.app.Activity.performRestoreInstanceState(Activity.java:963) at android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentation.java:1186) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2399) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2490) at android.app.ActivityThread.-wrap11(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1354) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5443) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
我尝试禁用 proguard 并添加以下代码,但没有任何帮助
i tried disabling the proguard and adding below code but nothing helps
-keepclassmembers 类 * 实现 android.os.Parcelable {静态 ** 创作者;}
-keepclassmembers class * implements android.os.Parcelable { static ** CREATOR; }
我有自定义视图,但还没有在其中实现 Parcelable 我也从片段中剥离了所有内容,即使在崩溃时也保持视图,但是当我只是加载片段实例时新的 android.support.v4.app.Fragment();我没有收到错误
i have custom view but haven't implemented parcelable in them also i have striped everything from fragment and just kept the view even then it was crashing but when i was just loading instance of fragment like new android.support.v4.app.Fragment(); i wasn't getting the error
推荐答案
我遇到了同样的问题,找到了再次启动应用停止崩溃的解决方案
在您的 MainActivity使用:
I faced the same issue and found the solution to start the app again to stop the crash
In your MainActivity
Use:
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
try {
super.onRestoreInstanceState(savedInstanceState);
}catch (Exception e){
e.printStackTrace();
Intent intent=new Intent(this,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
这篇关于恢复时解组未知类型代码异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!