liangjingkanji / Serialize

🍒 Android 简单高性能读写本地数据, 直接存储对象/基础类型
http://liangjingkanji.github.io/Serialize/
Apache License 2.0
239 stars 20 forks source link

集合无法保存数据 #12

Closed fengtech closed 2 years ago

fengtech commented 2 years ago

@Parcelize data class MtbAStdTFEntity( var CurrentMax: Double = 0.0, var CurrentMin: Double = 0.0, var Duration: Int = 0, var Freq: Int = 0, var item: Int = 0 ) : Parcelable

object MtbaSet { var listStdTF : MutableList by serialLazy() }

通过对listStdTF赋值后发现只是内存中数据改,没有保存到磁盘,app重启启动时候没有数据,是否用法有问题

liangjingkanji commented 2 years ago

你是不是往集合里面添加元素, 然后发现元素没有保存到磁盘

因为只能保存对象, 对于对象自身的属性变动无法识别也无法保存, 文档有提及:覆盖值

fengtech commented 2 years ago

是的,我在集合里面动态添加元素了。 这种如果不能保存的话, 请教用什么方法处理比较好?谢谢

liangjingkanji commented 2 years ago

我的回复中包含文档提及

fengtech commented 2 years ago

看了文档, 实际上我就是用 serialLazy() , 没有效果 var listStdTF : MutableList by serialLazy()

liangjingkanji commented 2 years ago

文档写错了, serialLazy()也不会触发保存到磁盘, 保存和liveData一样只能处理value而不能监听value里面的字段

liangjingkanji commented 2 years ago

关于单纯的列表建议使用数据库保存, 因为存在N多条元素, 可能会在集合体积非常大的情况下影响高度读写性能

fengtech commented 2 years ago

明白了, 主要是一些不确定数量但是数据又不多的列表我想通过这种方式保存。

liangjingkanji commented 2 years ago

我当初设计也是为了保存这些轻量级数据方便主线程读写

我将会更新完善文档, 如果你发现错误也可以修改后发起pr