您的位置:首页 > 其它

确保发送方和接收方序列化对象保持一致

2017-04-30 10:17 281 查看

在开发中出现了一个异常,A应用给B应用发送广播,广播中携带序列化对象,这个对象在B应用中序列化实现的是Parcelable接口,在B应用中序列化实现的是Serializable接口于是这时候出现了下面报错

Caused by: android.os.BadParcelableException: Parcelable protocol requires a Parcelable.Creator object called CREATOR on class ClassName

at android.os.Parcel.readParcelableCreator(Parcel.java:2301)

at android.os.Parcel.readParcelable(Parcel.java:2240)

at android.os.Parcel.readValue(Parcel.java:2147)

at android.os.Parcel.readArrayMapInternal(Parcel.java:2478)

at android.os.BaseBundle.unparcel(BaseBundle.java:221)

at android.os.BaseBundle.getSerializable(BaseBundle.java:988)

at android.os.Bundle.getSerializable(Bundle.java:845)

at ClassName.onReceive(ClassName.java:868)

at android.app.LoadedApkReceiverDispatcherArgs.run(LoadedApk.java:866)

at android.os.Handler.handleCallback(Handler.java:739)

at android.os.Handler.dispatchMessage(Handler.java:95)

at android.os.Looper.loop(Looper.java:135)

at android.app.ActivityThread.main(ActivityThread.java:5285)

at java.lang.reflect.Method.invoke(Native Method)

at java.lang.reflect.Method.invoke(Method.java:372)

at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:969)

at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:764)

分析异常的时候很纳闷,明明是getSerializable最后为啥报错的时候说缺省了CREATOR属性,后来才发现误接收了B应用的广播,追查后才知道,A应用这部分实现是从B应用那边copy过来的,后来B应用改了下序列化实现方式于是就罪过了

bundle.setClassLoader(getClass().getClassLoader());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐