如何实现DataStore的封装功能?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1163个文字,预计阅读时间需要5分钟。
之前Content Provider、Room、DataStore混用,导致问题重重。步骤走得太大了,bug满天飞(DataStore直接给我报错说同时打开了多个DataStore,但找不到问题所在)。实在忍不了,果断弃用DataSto。
之前Content Provider,Room,DataStore一起弄,对于蒟蒻我来说步子迈得太大了,bug满天飞(DataStore一直给我报错说同时打开了多个DataStore,却又找不到问题所在),遂不得不暂且抛下DataStore换回SharedPreference,后来才发现是被Hook应用在启动的时候,LSPosed检测了新Module导致同时Hook到了模块本身,然而模块里又没忽略自己,导致两个Content Resolver同时请求了两次数据。
既然bug已经解决了,那大可以把SharedPreference给扔了,由于Project目前过于混乱,不仅所有业务逻辑居然都在ViewModel和Provider里,而且SharedPreference的调用也分别在MainViewModel和MainProvider里写了两次,极为Chulu,为了以后自己和项目不爆炸,不得不学习一下工具类的封装,免得重复逻辑飞得到处都是。
然后就开始写DataStoreUtil,由于会被重复使用,所以必须使其遵循单例模式,因为本蒟蒻对单例模式这些东西一无所知,连object关键字都不知道是干嘛的,所以瞎学一气后,使用了最为简单的懒汉模式,直接用object定义一个单例,反正程序在启动时本来就要初始化DataStore的,懒汉模式的缺点在此就不构成影响,双重校验锁这种高级东西以后有需要再用吧。
本文共计1163个文字,预计阅读时间需要5分钟。
之前Content Provider、Room、DataStore混用,导致问题重重。步骤走得太大了,bug满天飞(DataStore直接给我报错说同时打开了多个DataStore,但找不到问题所在)。实在忍不了,果断弃用DataSto。
之前Content Provider,Room,DataStore一起弄,对于蒟蒻我来说步子迈得太大了,bug满天飞(DataStore一直给我报错说同时打开了多个DataStore,却又找不到问题所在),遂不得不暂且抛下DataStore换回SharedPreference,后来才发现是被Hook应用在启动的时候,LSPosed检测了新Module导致同时Hook到了模块本身,然而模块里又没忽略自己,导致两个Content Resolver同时请求了两次数据。
既然bug已经解决了,那大可以把SharedPreference给扔了,由于Project目前过于混乱,不仅所有业务逻辑居然都在ViewModel和Provider里,而且SharedPreference的调用也分别在MainViewModel和MainProvider里写了两次,极为Chulu,为了以后自己和项目不爆炸,不得不学习一下工具类的封装,免得重复逻辑飞得到处都是。
然后就开始写DataStoreUtil,由于会被重复使用,所以必须使其遵循单例模式,因为本蒟蒻对单例模式这些东西一无所知,连object关键字都不知道是干嘛的,所以瞎学一气后,使用了最为简单的懒汉模式,直接用object定义一个单例,反正程序在启动时本来就要初始化DataStore的,懒汉模式的缺点在此就不构成影响,双重校验锁这种高级东西以后有需要再用吧。

