Android Jetpack组件 DataStore的使用和简单封装

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

下面我们再写一个取数据的方法。

private fun get() = runBlocking {

return@runBlocking dataStore.data.map { it[key] ?: “新冠” }.first()

}

你会发现和存数据又有不同,这里的first()就是取值,这个方法换个方式来看就清晰一些。

在这里插入图片描述

然后我们在取数据按钮的点击事件中调用。

在这里插入图片描述

下面我们运行一下:

在这里插入图片描述

第一次我先取数据,显示的是默认值,然后我存数据再取数据。效果就是这样,但你会觉得使用起来很麻烦,不如SP好用,这个我们后面再去封装,先了解一些它的功能特性。

三、数据查看和清除


在进行定义dataStore时,会在手机中生成一个pb文件,这里我们用虚拟机来看,

在这里插入图片描述

然后通过你的程序包名去找

在这里插入图片描述

这里的文件就是存放你的缓存信息的文件。这里我用txt打开看一下

在这里插入图片描述

可以看到键和值,也许是浏览文件不对,下面我们清理一下这个数据。在布局中增加一个按钮

在这里插入图片描述

在代码中

在这里插入图片描述

通过clear方法调用进行数据的清除,清除后我们再看看这个pb文件

在这里插入图片描述

这个文件就什么都没有了,清除的干干净净。

四、封装


这个DataStore是肯定需要封装之后再使用的,直接使用太麻烦了,我们需要封装的像SP那样好用,数据类型就参考这个方法中的数据类型。

在这里插入图片描述

在写封装代码之前呢,我们先创建一个App类,里面的代码如下:

class App : Application() {

companion object {

lateinit var instance : App

}

override fun onCreate() {

super.onCreate()

instance = this

}

}

然后我们在AndroidManifest中设置

在这里插入图片描述

下面我们新建一个EasyDataStore类,将它设置为object,先创建DataStore,代码如下:

// 创建DataStore

val App.dataStore: DataStore by preferencesDataStore(

name = “Study”

)

// DataStore变量

val dataStore = App.instance.dataStore

下面我们先写好各个数据类型的存取方法,先写存数据的方法:

/**

  • 存放Int数据

*/

private suspend fun putIntData(key: String, value: Int) = dataStore.edit {

it[intPreferencesKey(key)] = value

}

/**

Android Jetpack组件 DataStore使用简单封装,安卓面试 下面我们再写一个取数据的方法。: “新冠” }.first()你会发现存数据又有不同,这里的first()就是取值,这个方法换个方式来看就清晰一些。然后我们在取数据按钮的点击事件中调用。下面我们运行一下:第一次我先取数据,显示的是默认值,然后我存数据再取数据。效果就是这样,但你会觉得使用起来很麻烦,不如SP好用,这个我们后面再去封装,先了解一些它的功能特性。三、数据查看清除在进行定义dataStore时,会在手机中生成一个pb文件,这里我们用虚拟机来看,然后通过你的程序包名去找。 阅读详情

相关推荐

JetpackDataStore数据存储组件使用简介

JetpackDataStore数据存储组件使用简介 介绍 Jetpack DataStore是一种数据存储解决方案,可让您使用Protocol Buffer(协议缓冲区)存储键值对或类型化对象。DataStore使用Kotlin协程Flow异步,一致的事务方式来存储数据。 注意: 如果需要支持大型或复杂的数据集,部分更新或参考完整性,请考虑使用 Room 而不是DataStoreDataStore非常适合小型,简单的数据集,并且不支持部分更新或参照完整性。 目的 Jetpack DataSto

weixin_42324979的博客 1108

Android DataStore使用封装

Android DataStore使用封装

Android JetpackDataStore的理解与使用

Android JetpackDataStore的理解与使用DataStorePreferences DataStore Proto DataStore设置使用 Preferences DataStore 存储键值对定义架构创建 Proto DataStore从 Proto DataStore 读取内容在同步代码中使用 DataStore DataStore Jetpack DataStore 是一种数据存储解决方案,允许您使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin

Android、HTML、CSS、JS、JAVA、Kotlin、PHP等技术 2075

Android 数据存储:Android Jetpack 中的 DataStore

通过 Android Jetpack 中的 DataStore,我们可以轻松地进行数据存储检索,无论是简单的键值对还是复杂的数据模型。使用 Preferences DataStore,我们可以更好地管理用户首选项,而 Proto DataStore 则为我们提供了更强大的数据存储功能。与 SharedPreferences 相比,DataStore 具有更好的性能、更好的类型安全性更好的支持协程的能力。不同之处在于,Preferences DataStore 支持协程,并具有更好的性能类型安全性。

UoJava的博客 344

Android随笔-DataStore

DataStoreJetPack推出的异步、事务性、类型安全的数据存储库,用于替代SharedPreferences。分为Preferences DataStore(键值对存储)Proto DataStore(结构化存储)。核心实现通过SingleProcessDataStore的状态机SimpleActor消息队列保证线程安全事务性,采用写时复制机制更新数据。使用时需保持单例,通过Flow订阅数据变更,编辑操作通过事务块原子执行。内部通过无界Channel严格串行处理读写请求,避免并发问题,确保数

古典码 446

Android DataStore:安全存储轻松管理数据

关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。

Python栈 1989

2024年最全Android Jetpack组件 DataStore使用简单封装,大厂面试题汇总

光有这些思路搞懂单个知识的应用是还远远不够的,在Android开源框架设计思想中的知识点还是比较多的,想要搞懂还得学会整理规划:我们常见的**Android热修复框架、插件化框架、组件化框架、图片加载框架、网络访问框架、RxJava响应式编程框架、IOC依赖注入框架、最近架构组件Jetpack等等Android第三方开源框架,**这些都是属于Android开源框架设计思想的。如下图所示:这位阿里P8大佬针对以上知识点,熬夜整理出了一本长达1042页的完整版如何解读开源框架设计思想。

2401_84545291的博客 497

Android JetpackDataStore

Google 推出了 JetPack 的新成员 DataStoreDataStore 是一种新的数据存储方案。DataStore以异步、一致的事务方式存储数据,克服了 SharedPreferences 的一些缺点。 Jetpack DataStore 是经过改进的新版数据存储解决方案,旨在取代 SharedPreferences。DataStore 基于 Kotlin 协程流程构建而成,提供两种不同的实现: Proto DataStore,它允许您存储类型化的对象(由协议缓冲区提供支持) Pre

接受自己的普通,然后拼尽全力去与众不同 1万+

Jetpack架构组件库:DataStore

Jetpack DataStore 是一种经过改进的新数据存储解决方案,旨在取代 SharedPreferences。DataStore 基于 Kotlin 协程 Flow 构建而成,提供以下两种不同的实现: Preferences DataStore 用于键值对存储。数据以异步、一致事务性的方式存储,有助于避免 SharedPreferences 的一些缺点。此实现不需要预定义的架构,也不确保类型安全。 Proto DataStore 用于存储类型化对象,数据作为自定义数据类型的实例进行存储。此实现

川峰的博客 6万+

Jetpack DataStore 基础使用简单封装

Jetpack DataStore 基础使用简单封装 在Application下初始化 DataStoreUtil.instance.init(this) 写入数据 suspend inline fun <reified T : Any> dataStoreSave(key: String,value: T) = when(T::class){ String::class -> DataStoreUtil.instance.mDataStorePre.edit { it[pr

lulixue419976628的博客 1065

Jetpack DataStore 你总要了解一下吧?

DataStoreAndroid Jetpack 中的一个组件,它是一个数据存储的解决方案,跟SharedPreferences一样,采用key-value形式存储。

帅次的博客 3027
上一篇: android Alarm闹钟发送广播播放音乐(1)
下一篇: Android Socket使用详解
lingyued
博客等级 码龄4年 2414粉丝 250原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值