首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

DataStore —— SharedPreferences 的替代者 ?

SharedPreferences 大家应该都用过,它的槽点很多,多到我专门写了一篇文章。 细数 SharedPreferences 的那些槽点 ! 不过,官方吐槽,最为致命。...DataStore 提供了一种存储轻量数据的安全稳定的方案,例如配置文件,应用状态等。它不支持局部更新:如果任何一个成员变量被修改了,整个对象都将被序列化并持久化到磁盘。...尤其是,它解决了 SharedPreferences API 的设计缺陷。 好家伙,看起来这就是 SharedPreferences 的替代品了。 上代码 简单看一下代码实现。...第一,Google 自己也快看不下去 SharedPreferences 了。...第二,越来越多的新特性都是基于 Kotlin 实现的了,甚至只对 Kotlin 提供支持,大有 Kotlin First 到 Kotlin Only 的趋势。

57320

Kotlin Vocabulary | 内联函数的原理与应用

Util 类,用于分类整理那些会在许多地方用到的小型函数 (也称实用函数),如果这类函数接收了另一个函数作为参数,则可能会造成一些额外的对象分配,通过使用 inline 关键字,您可以避免这种情况并提升应用性能...函数调用——工作原理 我们在应用中常常要用到 SharedPreferences,现在假设您为了减少每次向 SharedPreferences 中写入内容时产生的模板代码,实现了以下实用函数: fun...如果我们查看 Kotlin 字节码 (Tools > Kotlin > Decompiled Kotlin to Java),就能看到这里调用了 NEW 指令。...内联函数——工作原理 为了提升我们应用的性能,我们可以通过使用 inline 关键字,来减少函数对象的创建: inline fun SharedPreferences.edit( commit:...Boolean = false, action: SharedPreferences.Editor.() -> Unit ) { … } 复制代码 现在,Kotlin 字节码中已经不包含任何

64010

【面试黑洞】Android 的键值对存储有没有最优解?

这种性能,是 SharedPreferences 和数据库都做不到的——顺便提一句,虽然我总在提 SharedPreferences,但其实这种做法本来是先在 iOS 版的微信里应用的,后来才移植到了...我的猜测是这样的:MMKV 底层的原理是内存映射,而内存映射这种方式,它从内存往磁盘里同步写入的过程并不是实时的,也就是说并不是每次我们写入到映射的内存里就会立即从这块内存写入到磁盘,而是会有一些滞后。...先说性能问题:SharedPreferences 虽然可以用异步的方式来保存更改,以此来避免 I/O 操作所导致的主线程的耗时;但在 Activity 启动和关闭的时候,Activity 会等待这些异步提交完成保存之后再继续...SharedPreferences 如果使用同步方式来保存更改(commit()),会导致主线程的耗时;但如果使用异步的方式,给它加回调又很不方便,也就是如果你想做一些「等这个异步提交完成之后再怎么怎么样...不过如果你的团队没有在用协程,甚至没有在用 Kotlin,那 DataStore 也暂时不适合你们,因为它是完全依赖 Kotlin 协程来实现和使用的。

1.1K20

Google发布Android KTX预览版

前天,Google 发布了 Android KTX 预览版,Android KTX 是一组扩展程序,它能使 Android 上的 Kotlin 代码更简洁,从而提高开发者的编程体验。...大家知道,Google在2017年的Google I/O大会上将Kotlin列为第一开发语言之后,便不遗余力的支持Kotlin。...那么,相比于通用的Kotlin,Android KTX究竟做了哪些方面的优化呢,下面通过一些示例来简单对比下。...SharedPreferences 编辑 SharedPreferences 是非常常见的用例,使用 Android KTX 后,代码稍微短些,能更自然地读取和写入。...Android集成 要在你的 Android Kotlin 项目中开始使用 Android KTX,需要在应用模块 build.gradle的脚本文件中添加以下配置脚本: repositories {

31960

把 格子衫 改造得更时尚 | Kotlin & Jetpack 最佳实践技巧

将不仅仅是 Material Design 的示例应用,同时还将是一个使用了 Kotlin 的符合 Android 应用架构指南的示例应用。...因此,在决定修复 Plaid 应用 Bug 的同时,我们希望为这个项目加入 Jetpack 架构组件和引入 Kotlin 语言,使其成为一个更 "时尚" 的应用。...两个类,其中 RemoteDataSource 将用来与 API 服务交互,构造请求数据,接收响应数据;而 LocalDataSource 则会负责将数据存储在本地,存储的方式可以通过数据库,或者 SharedPreferences...如果 Repository 类只依赖于一个数据源,每次都从后端获取数据而不做任何临时存储的话,在用户离开当前页面重新返回时,应用将必须重新获取数据,即使数据未发生更改也是如此,这将会浪费宝贵的网络带宽,...使用 Kotlin (视频) Kotlin 语言有诸多特性 (如协程的 suspend 函数、扩展函数和高阶函数等) 可以帮助开发者更好的构建应用

42940

把 格子衫 改造得更时尚 | Kotlin & Jetpack 最佳实践技巧

将不仅仅是 Material Design 的示例应用,同时还将是一个使用了 Kotlin 的符合 Android 应用架构指南的示例应用。...因此,在决定修复 Plaid 应用 Bug 的同时,我们希望为这个项目加入 Jetpack 架构组件和引入 Kotlin 语言,使其成为一个更 "时尚" 的应用。...两个类,其中 RemoteDataSource 将用来与 API 服务交互,构造请求数据,接收响应数据;而 LocalDataSource 则会负责将数据存储在本地,存储的方式可以通过数据库,或者 SharedPreferences...如果 Repository 类只依赖于一个数据源,每次都从后端获取数据而不做任何临时存储的话,在用户离开当前页面重新返回时,应用将必须重新获取数据,即使数据未发生更改也是如此,这将会浪费宝贵的网络带宽,...使用 Kotlin (视频) Kotlin 语言有诸多特性 (如协程的 suspend 函数、扩展函数和高阶函数等) 可以帮助开发者更好的构建应用

83630

Kotlin 委托属性在Android开发中的几个使用场景!

Kotlin 真的是一门美丽的开发语言,她拥有的一些很棒的特性使 Android 开发变成的有趣和令人兴奋。...param: String = "" set(value) { field = value.trim() } } 如果对语法不熟悉,可以参考 Kotlin...例如,我们可能想存储一些用户偏好以便让用户自定义应用的功能。普遍采用的方式是使用 SharedPreferences 来存储键值对。...我们还可以为属性提供一个默认值,以防在SharedPreferences没有找到值。 这个委托也可以使用相同的键来在SharedPreferences存储属性的新值。...总结 我们看来一些在 Android 开发中使用 Kotlin 委托属性的例子。当然了,你也可以用别的方式来使用它。 这篇文章的目标是展示委托属性是多么强大,以及我们可以用它做什么。

4.5K41

Kotlin 的 Property Delegate 与 Swift 的 Property Wrapper

Kotlin 的属性代理(Property Delegate) 我们先来简单回顾下 Kotlin 的属性代理的一些基础知识和应用场景。...对 loginName 的读写等同于对 SharedPreferences 中的 "loginName" 这个 key 的读写,这个操作是不是非常方便?...我们同样可以通过被代理的属性名来查询对应 key 在 Properties 文件中的值,这个逻辑与 SharedPreferences 如出一辙,大家有兴趣可以参考这里:AbsProperties.kt...其实 Map 也是一种存储的方式,这与前面提到的 SharedPreferences 又有什么区别呢? 这样的例子我们还能列举很多,如数据库读写、文件读写甚至网络读写等等。...getValue 和 setValue 中提供了 KProperty 这个参数,我们可以通过它来获取对应属性的一些元信息,最常用的就是 name,所以我们在前面使用 Kotlin 代理 SharedPreferences

5.2K20

学习|Android中SharedPreferences轻量数据存储

SharedPreferences轻量数据存储 有时候我们做的App中不需要本地保存数据,但是有些小的配置参数需要记录,如果中Sqlite就感觉有点太重了,也比较麻烦,所以今天我们来看看Android系统中轻量数据存储...SharedPreferences SharedPreferences介绍 微卡智享 SharedPreferences内部是以XML的形式进行数据存储的,采用Key/value的方式 进行映射,最终会在手机的...获取一个SharedPreferences,两个参数为生存的文件名和创建模式,MODE_PRIVATE:默认模式,该模式下创建的文件只能被当前应用或者与该应用具有相同SharedUserID的应用访问。...定义SharedPreferences ? 在onCreate中获取SharedPreferences ? 写入数据的方法 ? ? 读取数据的方法 ?...以上就是SharedPreferences的简单使用方法,为了在别的程序中也可以方便使用,这里我们自己写了一个封装好的kotlin的SpHelper的类 SpHelper类 package dem.vac.sharedpreferencestest

65710

为什么我要改用Kotlin

比如下面的代码就是lambda的应用。...利用Kotlin中的高阶函数的功能,我们能更好的解决这个问题 fun SharedPreferences.editor(f: (SharedPreferences.Editor) -> Unit) {...Kotlin可以现有的全部的Java框架和库 Java文件可以很轻松的借助IntelliJ的插件转成kotlin Kotlin应用广泛 Kotlin对Android应用开发支持广泛,诸多工具,比如kotterknife...读到这里,是不是想要尝试一下Kotlin呢,它简洁的语法,汇集诸多特性,高效率实现等等,已经在国外风生水起,国外的Pintereset, Square, Flipboard等公司已经开始应用到生产中。...篡改Python的一句名言“人生苦短,我用Kotlin”,这样一个高效实用的语言应该会被越来越多的团队所接受,并应用到开发生产中。当然也希望在国内环境下大放异彩。

61720

一起看 IO | Jetpack 组件的新特性

在 Room 2.4 中,对 Kotlin Symbol Processing (KSP) 的支持已经稳定。在我们针对 Kotlin 代码的基准测试中,KSP 相对 KAPT 有两倍的速度提升。...Room 2.4 还内建了对枚举和 RxJava3 的支持,同时也全面支持 Kotlin 1.6。 我们从 Room 2.5 开始使用 Kotlin 对整个库进行重写。...复制代码 DataStore DataStore 库是一款健壮可靠的数据存储解决方案,它解决了 SharedPreferences 所存在的问题。...如果想要了解如何在各种 SharedPreferences应用场景中使用这一强大的替代方案,您可以查看 MAD Skills: DataStore 系列文章和视频,其中包含了如何测试应用中 DataStore...界面库及指南 我们对界面库进行了一些更改,以更好地支持大屏幕兼容性、可折叠设备和 Emoji。

3.1K20

【专业技术】Android数据保存之SharedPreferences

可能一些应用程序不需要保存用户的进度信息,但是用户对于应用程序的设置信息一定要保存。很多应用需要保存大量的数据到数据库或者文件里,比如看电视的应用,需要保存大量的频道信息。...每一个SharedPreferences文件都被Android framework管理,可以是只能创建它的应用程序访问,也可以分享给其他应用程序。怎么用SharedPreferences保存数据呢?...注意:当你给SharedPreferences起名字的时候最好是复杂点的,这样就能保证不会有名字重复却属于不同应用程序的SharedPreferences,最好是以你的应用包名再加上其他构成,比如"com.example.myapp.PREFERENCE_FILE_KEY...方法有返回值,返回值是一个boolean变量,表示你的保存动作是否成功,apply是没有返回值的,所以如果你不需要返回值,也不关心提交是否成功可以用apply来代替commit; 2、apply是先把数据更改提交到内存...,然后再异步保存到磁盘上,而commit这两个操作是同步的,所以在进行频繁提交数据更改时apply更为高效; 读取数据从Shared Preferences文件: 从Shared Preferences

1.4K70
领券