android.os.BadParcelableException: ClassNotFoundException
原因:跨进程间使用Bundle传递一个Parcelable对象时出现ClassNotFoundException异常,出现这个异常的原因是因为ClassLoader不对造成的,我们应用中存在两种类加载器它们分别是BootClassLoader和PathClassLoader.BootClassLoader用来加载系统类,PathClassLoader用来加载我们在应用中自己写的类.所以当类加载器为
原因:跨进程间使用Bundle传递一个Parcelable对象时出现ClassNotFoundException异常,出现这个异常的原因是因为ClassLoader不对造成的,我们应用中存在两种类加载器它们分别是BootClassLoader和PathClassLoader.
BootClassLoader用来加载系统类,PathClassLoader用来加载我们在应用中自己写的类.所以当类加载器为BootClassLoader时我们要加载自己写的类就会出现ClassNotFound异常.
在进程间通信中Messenger携带bundle传递Parcelable对象,在到达另一个进程后通过bundel取出parcelable对象时出现ClassNotFound异常是因为它通过BootClassLoader来加载我们的Parcelable对象
解决方案:在接收bundle对象后要设置setClassLoader
Bundle bundle= msg.getData();
bundle.setClassLoader(getClass().getClassLoader());
这种一般在同一个进程之间不会出现,不同进程之间容易出现。
更多推荐
所有评论(0)