Android开发拾遗:如何使用Proto DataStore
创建于:发布于:文集:Android开发拾遗 持久化一些用户数据是一个常见的需求,例如保存用户设置,Android提供了一个方便的机制,叫做DataStore。其中有两套API,一个是Preferences DataStore
,可以存取简单的key-value
数据;另一个是Proto DataStore
,顾名思义,这需要开发者定义一个protocol buffers的schema,可以存取自定义的数据类型,并提供类型安全保证。
最初我仅用到了简单的键值对API,因为业务上需要的配置项逐渐变多,并且在一些地方我需要使用枚举,所以萌生了从Preferences DataStore
转到Proto DataStore
的念头。但可惜的是,Android的文档关于Proto DataStore
没有详细的描述,在参考了一些开源代码后,我找到了能适配Kotlin
以及Gradle Kotlin DSL
的使用方法,在此记录一下。
首先要在app/src/main/proto
目录下创建一个protobuf文件,如settings.proto
:
有了schema之后,还需要有对应的用来序列化/反序列化的数据结构,这个数据结构可以通过库来生成。修改Gradle配置:
先创建一个SettingsSerializer.kt
文件,定义序列化器:
读取时就可以使用冷流:
如果要设置值,可以使用updateData
方法: