E/Parcel: Class not found when unmarshalling
E/Parcel: Class not found when unmarshalling: xxx.ItemDataBean
java.lang.ClassNotFoundException: xxx.ItemDataBean
原因分析
- Android有两种不同的
classloaders:framework classloader和apk classloader framework classloader知道怎么加载android classesapk classloader知道怎么加载你自定义的类,apk classloader继承自framework classloader,所以也知道怎么加载android classes。- 在应用刚启动时,
默认class loader是apk classloader,但在系统内存不足应用被系统回收会再次启动,这个默认class loader会变为framework classloader了,所以对于自己的类会报ClassNotFoundException。
解决办法
1、【推荐】Client端接收Bundle的时候进行处理
bundle.setClassLoader(getClass().getClassLoader());
2、需要传递的JavaBean继承自Parcelable,成员变量进行一定处理
//原方法
//rect = in.readParcelable(null);
//改为
config = in.readParcelable(Rect.class.getClassLoader());
542

被折叠的 条评论
为什么被折叠?



