在不同的Android版本中保存/加载ArrayList
我在安卓版本中保存/加载ArrayList<HashMap<String, Object>>
时出现问题。我一直在Google和SO上搜索解决方案几天,我尝试过的一切都无法工作。在不同的Android版本中保存/加载ArrayList
这是我得到的错误:
java.io.InvalidClassException: org.apache.harmony.luni.internal.util.ZoneInfo; 不兼容的类(SUID): org.apache.harmony.luni.internal.util.ZoneInfo: static final long serialVersionUID = -8334108180457627365L;但预期org.apache.harmony.luni.internal.util.ZoneInfo: static final long serialVersionUID = 2415005675580187790L;
我试过implement Serializable
和static final long serialVersionUID = 1L
含有的ObjectInputStream和ObjectOutputStream的类,但误差不会改变。进一步的测试表明,这个错误甚至在两个不同的应用程序遇到同样的问题时也不会改变,而且错误中的SUID完全取决于该文件已保存或试图加载的Android版本。
我也尝试Parcelable没有成功。
如何在不存在此问题的情况下保存并加载ArrayList?
这里是SUID的对ROM的我已经试过:
G1 1.6(CSDI V4 POR超级@ tmel):-1970599206206877388L
Droid的2.2(CyanogenMod的6.1.2):-8334108180457627365L
Droid的2.3(CyanogenMod的7每晚12):2415005675580187790L
我已经总结了一段时间(5月/ 6月),唯一的解决方法是将数据保存到数据库中,这是最好的方法。
我发现数据库起初有点令人望而却步,但一旦你明白如何使用它们,它们就非常棒。我强烈建议任何想存储数据的人,至少在大多数情况下。这是让我开始使用数据库的视频:http://youtube.com/watch?v=v61A90qlK9s
你有java.util.Calendar
或java.util.Timezone
作为价值,是不是?与任何其他形式代替应当确定,例如:
Calendar.getTimeInMillis()
或
Timezone.getRawOffset()
对于一些原因,Dalvik在'ZoneInfo'类中更改serializationId。
它可以工作,但对于已有的具有这些数据类型的序列化数据,它仍然是一个问题。 – 2017-10-15 15:45:57