我正在编写一个由底层服务和GUI控制器组成的应用程序。该服务收集数据并发送到控制器,我使用Messenger并将一组可分配的对象放入消息包中。但是当在控制器端收到它时,会发生错误:
android.os.BadParcelableException:解组MyData中的ClassNotFoundException ...
我确信MyData正确实现了Parcelable接口。看来我必须用ClassLoader做点什么?或者还有什么?请帮我。非常感谢你!
答案 0 :(得分:1)
昨天我遇到了同样的问题,这是通过这种方式解决的: 使用“bundle.setClassLoader(getClassLoader());”设置类加载器就在该捆绑包上调用“getParcelableArray”之前。
我不知道它是如何工作或为什么工作的,但它在我的代码中运行得很好。
答案 1 :(得分:-1)
以下是我的代码的一部分:
//send data from the service to the bound client
MyData[] items; ...
Bundle bundle = new Bundle();
bundle.putParcelableArray("items", items);
//send in a message
Message msg = Message.obtain(null, DATA_AVAIL);
msg.replyTo = mIncomingMessenger;
...
msg.setData(bundle);
=========
//receive data
public void handleMessage(Message msg) {
if (msg.what == DATA_AVAIL){
Bundle bundle = msg.getData();
MyData[] items = (MyData[])bundle.getParcelableArray("items");
//error happens here, classnotfound
}
...
}