java.io.NotSerializableException:android.os.Bundle在尝试序列化包含android bundle的对象时

时间:2016-06-20 03:58:48

标签: android serialization android-bundle

我想使用Messageapi从智能手表向智能手机发送一个对象。由于messageapi需要字节数组来发送消息,我想将我的对象转换为字节数组。我使用apache utils来序列化和反序列化。序列化时出现以下错误:

org.apache.commons.lang3.SerializationException: java.io.NotSerializableException: android.os.Bundle
           at org.apache.commons.lang3.SerializationUtils.serialize(SerializationUtils.java:156)
           at org.apache.commons.lang3.SerializationUtils.serialize(SerializationUtils.java:178)

我的对象有两个变量 - 一个字符串和一个android包。

以下是代码实现:

序列化:

byte[] data = SerializationUtils.serialize(myObject);

要反序列化:

MyObject myObject = (MyObject) SerializationUtils.deserialize(byte[] data)

序列化包含android bundle的对象的最佳方法是什么?

MyObject类如下:

public class MyObject implements Serializable {

    private String type;
    private Bundle data;

    public String getType() {
        return type;
    }

    public void setType(String value) {
        type = value;
    }

    public Bundle getData() {
        return data;
    }

    public void setData(Bundle value) {
        data = value;
    }

}

PS:我已经尝试过Parcelable来序列化包含android bundle的对象,它可以在相同OS版本的设备中运行。但是当涉及的两个设备具有不同版本的OS时,它不起作用(例如,使用wifip2p从API级别23设备向API级别15设备发送消息)。所以我正在寻找一种始终有效的方法。

1 个答案:

答案 0 :(得分:0)

<强>问题:

我认为有些对象无法像 Bundle和Context 那样进行序列化。它本身所说的错误原因无法序列化Bundle。

  

java.io.NotSerializableException:android.os.Bundle

解决方案:

  

尝试从private Bundle data;删除MyObject,看看你是否   得到同样的错误??

您需要找到一种序列化Bundle的方法。以下是您可以参考的问题:

How to serialize a Bundle?