Android之提示java.lang.RuntimeException: Parcel: unable to marshal value Image问题

简介: Android之提示java.lang.RuntimeException: Parcel: unable to marshal value Image问题

1 问题

使用Intent携带数据(putExtra)跳转activity,提示如下错误

04-18 22:42:49.664 16194 16194 E AndroidRuntime: Process: com.appsinnova.android.keepshare, PID: 16194
04-18 22:42:49.664 16194 16194 E AndroidRuntime: java.lang.RuntimeException: Parcel: unable to marshal value Image{id='0', type='null', createTime='null', urls=ImageUrl{raw='/storage/emulated/0/images/20200409_223150.jpg', full='null', regular='null', small='null', thumb='null'}, date='null', isSelect=false}
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.os.Parcel.writeValue(Parcel.java:1680)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.os.Parcel.writeList(Parcel.java:979)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.os.Parcel.writeValue(Parcel.java:1627)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.os.Parcel.writeArrayMapInternal(Parcel.java:891)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1579)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.os.Bundle.writeToParcel(Bundle.java:1233)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.os.Parcel.writeBundle(Parcel.java:931)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.content.Intent.writeToParcel(Intent.java:10037)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:3636)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1669)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.app.Activity.startActivityForResult(Activity.java:4762)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.app.Activity.startActivityForResult(Activity.java:4691)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at com.skyunion.android.base.RxBaseActivity.startActivityForResult(RxBaseActivity.java:372)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.app.Activity.startActivity(Activity.java:5081)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.app.Activity.startActivity(Activity.java:5049)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at com.skyunion.android.base.RxBaseActivity.startActivity(RxBaseActivity.java:366)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at com.appsinnova.android.keepshare.account.MyLoveActivity.imageClick(MyLoveActivity.kt:450)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at com.appsinnova.android.keepshare.account.favorite.adapter.MyFavoriteAdapter$4.onClick(MyFavoriteAdapter.java:295)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.view.View.performClick(View.java:6724)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.view.View.performClickInternal(View.java:6682)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.view.View.access$3400(View.java:797)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.view.View$PerformClick.run(View.java:26473)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:873)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:99)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:226)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7223)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
04-18 22:42:49.664 16194 16194 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:961)
04-18 22:42:49.672   601   642 I vendor.mediatek.hardware.power@2.1-impl: notifyAppState_2_1 pack:com.appsinnova.android.keepshare, act:com.appsinnova.android.keepshare, pid:16194, uid:10296, state:3


然后我在这类的子类里面添加实现Serializable接口

implements Serializable


然后运行依然报错

04-18 22:47:36.958 19445 19445 E AndroidRuntime: java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.appsinnova.android.keepshare.data.net.model.FavoriteModel$Image)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.os.Parcel.writeSerializable(Parcel.java:1730)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.os.Parcel.writeValue(Parcel.java:1678)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.os.Parcel.writeList(Parcel.java:979)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.os.Parcel.writeValue(Parcel.java:1627)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.os.Parcel.writeArrayMapInternal(Parcel.java:891)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1579)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.os.Bundle.writeToParcel(Bundle.java:1233)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.os.Parcel.writeBundle(Parcel.java:931)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.content.Intent.writeToParcel(Intent.java:10037)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.app.IActivityManager$Stub$Proxy.startActivity(IActivityManager.java:3636)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.app.Instrumentation.execStartActivity(Instrumentation.java:1669)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.app.Activity.startActivityForResult(Activity.java:4762)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.app.Activity.startActivityForResult(Activity.java:4691)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at com.skyunion.android.base.RxBaseActivity.startActivityForResult(RxBaseActivity.java:372)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.app.Activity.startActivity(Activity.java:5081)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.app.Activity.startActivity(Activity.java:5049)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at com.skyunion.android.base.RxBaseActivity.startActivity(RxBaseActivity.java:366)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at com.appsinnova.android.keepshare.account.MyLoveActivity.imageClick(MyLoveActivity.kt:450)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at com.appsinnova.android.keepshare.account.favorite.adapter.MyFavoriteAdapter$4.onClick(MyFavoriteAdapter.java:295)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.view.View.performClick(View.java:6724)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.view.View.performClickInternal(View.java:6682)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.view.View.access$3400(View.java:797)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.view.View$PerformClick.run(View.java:26473)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.os.Handler.handleCallback(Handler.java:873)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:99)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:226)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:7223)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:961)
04-18 22:47:36.958 19445 19445 E AndroidRuntime: Caused by: java.io.NotSerializableException: com.appsinnova.android.keepshare.data.net.model.FavoriteModel$ImageUrl
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1240)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        at android.os.Parcel.writeSerializable(Parcel.java:1725)
04-18 22:47:36.958 19445 19445 E AndroidRuntime:        ... 31 more

很明显啊,最外面的类也需要实现 Serializable接口,改了还是有问题,因为它的子类里面的子类也需要实现这个Serializable接口


2 解决办法

在这个类的外面被包裹的类和它的子类都实现 Serializable接口就可以了



相关文章
|
1月前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【4月更文挑战第3天】在移动开发领域,性能优化一直是开发者关注的焦点。随着Kotlin的兴起,其在Android开发中的地位逐渐上升,但关于其与Java在性能方面的对比,尚无明确共识。本文通过深入分析并结合实际测试数据,探讨了Kotlin与Java在Android平台上的性能表现,揭示了在不同场景下两者的差异及其对应用性能的潜在影响,为开发者在选择编程语言时提供参考依据。
|
2月前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【2月更文挑战第30天】 随着Kotlin成为开发Android应用的首选语言,开发者社区对于其性能表现持续关注。本文通过深入分析与基准测试,探讨Kotlin与Java在Android平台上的性能差异,揭示两种语言在编译效率、运行时性能和内存消耗方面的具体表现,并提供优化建议。我们的目标是为Android开发者提供科学依据,帮助他们在项目实践中做出明智的编程语言选择。
|
2月前
|
安全 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【2月更文挑战第24天】在移动开发领域,性能优化一直是开发者关注的焦点。随着Kotlin在Android开发中的普及,了解其与Java在性能方面的差异变得尤为重要。本文通过深入分析和对比两种语言的运行效率、启动时间、内存消耗等关键指标,揭示了Kotlin在实际项目中可能带来的性能影响,并提供了针对性的优化建议。
34 0
|
1月前
|
容器
Unable to create tempDir. java.io.tmpdir is set to /tmp
Unable to create tempDir. java.io.tmpdir is set to /tmp
42 1
|
2月前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
在开发高性能的Android应用时,选择合适的编程语言至关重要。近年来,Kotlin因其简洁性和功能性受到开发者的青睐,但其性能是否与传统的Java相比有所不足?本文通过对比分析Kotlin与Java在Android平台上的运行效率,揭示二者在编译速度、运行时性能及资源消耗方面的具体差异,并探讨在实际项目中如何做出最佳选择。
21 4
|
2月前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【2月更文挑战第24天】 在移动开发领域,性能优化一直是开发者关注的重点。随着Kotlin的兴起,许多Android开发者开始从传统的Java转向Kotlin进行应用开发。本文将深入探讨Kotlin与Java在Android平台上的性能表现,通过对比分析两者在编译效率、运行时性能和内存消耗等方面的差异。我们将基于实际案例研究,为开发者提供选择合适开发语言的数据支持,并分享一些提升应用性能的最佳实践。
|
4天前
|
Java API 开发工具
java与Android开发入门指南
java与Android开发入门指南
11 0
|
9天前
|
移动开发 Java Android开发
构建高效Android应用:探究Kotlin与Java的性能对比
【5月更文挑战第4天】在移动开发的世界中,性能一直是衡量应用质量的重要指标。随着Kotlin的兴起,许多Android开发者开始考虑是否应该从传统的Java迁移到Kotlin。本文通过深入分析两者在Android平台上的性能差异,帮助开发者理解Kotlin在实际项目中的表现,并提供选择编程语言时的参考依据。
22 5
|
12天前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【5月更文挑战第1天】 在移动开发的世界中,性能优化始终是开发者关注的焦点。随着Kotlin的兴起,许多团队和开发者面临着一个选择:是坚持传统的Java语言,还是转向现代化、更加简洁的Kotlin?本文通过深入分析和对比Kotlin与Java在Android应用开发中的性能表现,揭示两者在编译效率、运行速度和内存消耗等方面的差异。我们将探讨如何根据项目需求和团队熟悉度,选择最适合的语言,以确保应用的高性能和流畅体验。
|
12天前
|
Java 编译器 Android开发
构建高效Android应用:探究Kotlin与Java的性能差异
【4月更文挑战第30天】在Android开发领域,Kotlin作为一种现代化的编程语言,因其简洁性和功能性受到了开发者的广泛欢迎。尽管与传统的Java相比,Kotlin提供了诸多便利,但关于其性能表现的讨论始终未息。本文将深入分析Kotlin和Java在Android平台上的性能差异,通过实际测试数据揭示两种语言在编译效率、运行速度以及内存占用方面的具体表现,并探讨如何利用Kotlin的优势来提升Android应用的整体性能。