在服务和活动之间传输数据时ClassNotFoundException

时间:2010-12-20 05:21:04

标签: android ipc bundle

我正在编写一个由底层服务和GUI控制器组成的应用程序。该服务收集数据并发送到控制器,我使用Messenger并将一组可分配的对象放入消息包中。但是当在控制器端收到它时,会发生错误:

android.os.BadParcelableException:解组MyData中的ClassNotFoundException ...

我确信MyData正确实现了Parcelable接口。看来我必须用ClassLoader做点什么?或者还有什么?请帮我。非常感谢你!

2 个答案:

答案 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

        }
...
}