当活动调用 onDestroy() 时,我试图保存我的序列化对象,但是当我尝试使用 ObjectOutputStream 编写对象时,会抛出 java.io.NotSerializableExeption。
你能帮我么。谢谢
当活动调用 onDestroy() 时,我试图保存我的序列化对象,但是当我尝试使用 ObjectOutputStream 编写对象时,会抛出 java.io.NotSerializableExeption。
你能帮我么。谢谢
我遇到了同样的问题并制作了这个类来帮助序列化:
public class SerializableRect implements Serializable {
private static final long serialVersionUID = 1L;
private Rect mRect;
public SerializableRect(Rect rect) {
mRect = rect;
}
public Rect getRect() {
return mRect;
}
private void writeObject(java.io.ObjectOutputStream out) throws IOException {
int left = mRect.left;
int top = mRect.top;
int right = mRect.right;
int bottom = mRect.bottom;
out.writeInt(left);
out.writeInt(top);
out.writeInt(right);
out.writeInt(bottom);
}
private void readObject(java.io.ObjectInputStream in) throws IOException,
ClassNotFoundException {
int left = in.readInt();
int top = in.readInt();
int right = in.readInt();
int bottom = in.readInt();
mRect = new Rect(left, top, right, bottom);
}
}
如果您的对象映射包含一个不可序列化的对象,VM 会寻找一个无参数构造函数,以便使用默认值创建一个对象并继续前进。当它不能时,它会抛出这个异常。最重要的是,对象图中引用的每个对象都必须:
你没有提供足够的细节让我更进一步,但我还是不能为你写?通常,您可以从不可序列化的类派生或包装它们并提供必要的功能。只要每个成员都满足我列出的条件,就不应该抛出异常。
您需要确保该类实现了java.io.Serializable
接口。还可以考虑使用 Bundles 并将数据保存在onSaveInstanceState
. 有关数据存储的更多信息,请参阅此开发指南主题。