1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
| 1.说明 适用于存储复杂数据对象(如 User、Settings)
2.步骤 2.1 添加 Protobuf 依赖 dependencies { implementation "androidx.datastore:datastore-core:1.0.0" implementation "com.google.protobuf:protobuf-javalite:3.21.7" } 在 app/src/main/proto 目录下创建 user.proto
syntax = "proto3"; option java_package = "com.example.datastore"; option java_multiple_files = true;
message User { string name = 1; int32 age = 2; }
2.2 创建 Serializer object UserSerializer : Serializer<User> { override val defaultValue: User = User.getDefaultInstance()
override suspend fun readFrom(input: InputStream): User { return User.parseFrom(input) }
override suspend fun writeTo(t: User, output: OutputStream) { t.writeTo(output) } }
2.3 创建 DataStore val Context.userDataStore: DataStore<User> by dataStore( fileName = "user_prefs.pb", serializer = UserSerializer )
2.4 存储数据 suspend fun saveUser(user: User) { context.userDataStore.updateData { currentUser -> currentUser.toBuilder() .setName(user.name) .setAge(user.age) .build() } }
2.5 读取数据 val userFlow: Flow<User> = context.userDataStore.data lifecycleScope.launch { userFlow.collect { user -> Log.d("DataStore", "用户:${user.name}, 年龄:${user.age}") } }
|