我正在计划(并实施-_-我的不好,因为没有阅读本文的任何内容)使用Java Serialization从我的对象创建数据文件,但正如我现在注意到的那样,它是即使使用功能强大的设备,Android上也相当慢。
简单地说,我有一个应用程序存储了几十个Stroke对象,我需要保存并加载这些对象供以后使用。我当前的工作流程看起来像那样;
public class StrokePoint extends PointF implements Serializable { ... }
public class CardinalStroke extends Stroke implements Serializable {
...
protected ArrayList<StrokePoint> mPoints = new ArrayList<StrokePoint>();
...
}
最后,我有一个包含笔画对象的类,其他的东西,它看起来像;
public class NoteElement implements Serializable {
...
private ArrayList<IStroke> mStrokes = new ArrayList<IStroke>();
...
}
我正在使用序列化编码并将序列化数据保存到SQLITE DB中(我应该继续使用SQLITE进行此项使用,还是将这些数据保存到FILE中以备将来使用。);
private void saveElement(NoteElement element) {
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(element);
mProvider.insertOrUpdateElement(mCurrentModel.getBookId(), element.getUuid(), baos.toByteArray());
element.setIsModified(false);
} catch (IOException e) {
}
}
当我运行saveElement序列化时,至少对于非复杂元素保持大约500 + ms,我可能会有非常复杂的NoteElements,它们可能会保留2000ms +这对于序列化该数据是不可接受的,同样保存到SQLITE中就像序列化/ 4毫秒。
关于我的问题是,如何提高序列化速度,或者我应该使用完全不同的技术来实现这种数据存储。我读到了关于Percelable但是不能用于数据存储可能有一些替代内置或者我应该实现我自己的数据序列化器类,这在某些方面可能会很痛苦?我愿意接受任何建议,谢谢你的时间!
这个问题不是关于SQLITE慢插入,而是关于慢速序列化。我想知道是谁标记了这个问题被标记为重复的慢速SQLITE对象奇怪。