赞
踩
1 添加依赖
2 在 main 文件夹下创建 .proto 文件
3 编写 Serializer
4 编写基础存储工具类
5 举例使用
** 5.1 创建 DataStore 存储工具子类
** 5.2 基本使用
6 混淆
1 添加依赖
implementation "androidx.datastore:datastore:1.0.0-alpha06"
implementation "androidx.datastore:datastore-preferences:1.0.0-alpha06"
implementation "com.google.protobuf:protobuf-java:3.15.0"
2 在 main 文件夹下创建 .proto文件
.proto
syntax = "proto3";
option java_package = "com.afra55.xxx.ds.event";
option java_multiple_files = true;
message MessageEvent {
int32 type = 1;
string message = 2;
}
根据不同的存储需求来实现不同的 proto 文件,然后进行编译, java_package 是生成文件的路径
protoc -I=$SRC_DIR --java_out=$DST_DIR $SRC_DIR/ds.proto
例如当在 proto 文件夹下:
protoc -I=. --java_out=../java ./ds.proto
许多标准的简单数据类型都可以作为字段类型,包括bool,int32,float,double,和string。
ds
3 编写 Serializer
object MessageEventSerializer :Serializer{
override val defaultValue: MessageEvent
get() = MessageEvent.getDefaultInstance()
override fun readFrom(input: InputStream): MessageEvent {
try {
return MessageEvent.parseFrom(input)
} catch (e: Exception) {
throw CorruptionException("Cannot read proto.", e)
}
}
override fun writeTo(t: MessageEvent, output: OutputStream) {
t.writeTo(output)
}
}
4 编写基础存储工具类
import androidx.datastore.core.DataStore
import androidx.datastore.createDataStore
import androidx.datastore.preferences.core.*
import androidx.datastore.preferences.createDataStore
import androidx.datastore.createDataStore
import com
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。