liangjingkanji / Serialize

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

在TV盒子上保存集合数据,重启设备后,数据就没了 #40

Open rayzeng0221 opened 3 months ago

rayzeng0221 commented 3 months ago

我就是把本地已安装的 ApplicationInfo数据用这个进行保存,退出重新打开应用都没问题,但是重启盒子设备的话,再进来打开,之前保存的数据就都没了,后面没办法换成了 sharedpreference 保存就是正常的 。

liangjingkanji commented 3 months ago

怎么保存的?

rayzeng0221 commented 3 months ago

var favoriteApps: MutableList by serialLazy(arrayListOf())

liangjingkanji commented 3 months ago

常见问题阅读下 https://liangjingkanji.github.io/Serialize/issues.html

另外我也不清楚你怎么保存的

rayzeng0221 commented 3 months ago

我的评论怎么那个集合类型发出去就没了

liangjingkanji commented 3 months ago

阅读常见问题, 里面已经说了, 你肯定给集合添加元素, 然后来问集合添加的元素怎么没了

集合属于对象, 对象内的字段变化是无法感知的, 你要的这种需求无法实现

rayzeng0221 commented 3 months ago

我发的第二个评论你没看到吗?就是正常Object类里面定义一个集合 然后serialLazy加载,我把对象添加进集合了,然后只要不重启设备,我的集合数据读出来都是有的,但是重启设备后 这个集合就变成空了

rayzeng0221 commented 3 months ago

我的需要就是 保存用户收藏的最喜爱应用程序,这不是最基本的需求吗?sharedpreference也是这样,把每个应用对象加进集合里,然后再把集合转成JSON字符串,读的时候在进行转换出来。你说的这个为什么会消失 我是真的没明白

liangjingkanji commented 3 months ago
image
liangjingkanji commented 3 months ago

没有赋值动作无法触发委托属性, 就不会保存到磁盘, 所以重启就没了

  1. 使用函数而不是委托属性
  2. 添加完元素后再次赋值

没看过文档不推荐使用本库, 到时候历史数据丢了别后悔

rayzeng0221 commented 3 months ago

哦哦,我大概明白你的意思了,行我再试试看。