我想使用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设备发送消息)。所以我正在寻找一种始终有效的方法。
答案 0 :(得分:0)
<强>问题:强>
我认为有些对象无法像 Bundle和Context 那样进行序列化。它本身所说的错误原因无法序列化Bundle。
java.io.NotSerializableException:android.os.Bundle
解决方案:
尝试从
private Bundle data;
删除MyObject
,看看你是否 得到同样的错误??
您需要找到一种序列化Bundle的方法。以下是您可以参考的问题: