恢复时解组未知类型代码异常 [英] Unmarshalling unknown type code exception while resuming

查看:98
本文介绍了恢复时解组未知类型代码异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个应用程序,我在其中获得了带有两个片段的 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆