在本次开发者大会的首日,会议将从Google Play、Android即时应用、Android KTX,Android Kotlin开发和入门,以及 Android、Android apps for Chrome...例如: // Kotlin val uri = Uri.parse(uriString) // android KTX val uri = uriString.toUri() SharedPreferences...// kotlin sharedPreferences.edit() .putBoolean("key", value) .apply() // KTX sharedPreferences.edit...项目中开始使用 Android KTX,需要在应用模块 build.gradle的脚本文件中添加以下配置脚本。...inline fun SharedPreferences.edit(action: SharedPreferences.Editor.() -> Unit) { val editor = edit
例如,您正在使用 SharedPreferences,当您想去更新一个值,不需要像使用 Java 一样执行 3 个调用,您只需要执行一个调用即可: /* Copyright 2020 Google LLC..., enable) - editor.apply() + sharedPreferences.edit { + putBoolean(SHOW_DELETED_WORDS_KEY, enable) +...q=SharedPreferences.kt public inline fun SharedPreferences.edit( commit: Boolean = false, action...的 ktx 库; Play Core 有 core-ktx 软件包,为监控应用内更新状态提供协程支持。...敬请期待更多方法,并将 Kotlin 和 Jetpack 的优势应用于您的应用中。 点击屏末 | 阅读原文 | 即刻查看 KTX 扩展程序列表 ---- 推荐阅读 ----
在 Kotlin 中使用 Android 的 Java API 时,您会迅速意识到这样的做法失去了 Kotlin 语言简单有趣的特点。...q=SharedPreferences.kt public inline fun SharedPreferences.edit( commit: Boolean = false,...要实例化 ViewModel,可以使用 viewModels 委托 (详阅: Kotlin Vocabulary | Kotlin 委托代理): by ViewModels(factory): /* Copyright...的 ktx 库; Play Core 有 core-ktx 软件包,为监控应用内更新状态提供协程支持。...一旦您开始使用 -ktx 扩展,您的代码将会从简洁、易读和 Kotlin 习惯用语的特性中受益。敬请期待更多方法,并将 Kotlin 和 Jetpack 的优势应用于您的应用中。
SharedPreferences 大家应该都用过,它的槽点很多,多到我专门写了一篇文章。 细数 SharedPreferences 的那些槽点 ! 不过,官方吐槽,最为致命。...DataStore 提供了一种存储轻量数据的安全稳定的方案,例如配置文件,应用状态等。它不支持局部更新:如果任何一个成员变量被修改了,整个对象都将被序列化并持久化到磁盘。...尤其是,它解决了 SharedPreferences API 的设计缺陷。 好家伙,看起来这就是 SharedPreferences 的替代品了。 上代码 简单看一下代码实现。...第一,Google 自己也快看不下去 SharedPreferences 了。...第二,越来越多的新特性都是基于 Kotlin 实现的了,甚至只对 Kotlin 提供支持,大有 Kotlin First 到 Kotlin Only 的趋势。
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 字节码中已经不包含任何
Jetpack DataStore 基于 Kotlin 协程和 Flow 开发,并提供两种不同的实现: Proto DataStore 和 Preferences DataStore。...在您应用的任何地方,每当 Service 或 Activity 启动或停止时,就会触发等待 fsync() 的调用。...Dispatchers.IO https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines...该函数与 updateData() 一样,会在转换代码块完成之后将修改应用到磁盘,并且当数据在磁盘上完成存储时,此协程就会完成。...DataStore 包含使用 Kotlin 协程和 Flow 实现的完全异步 API,可以处理数据迁移、保证数据一致性,并且可以处理数据损坏。
这种性能,是 SharedPreferences 和数据库都做不到的——顺便提一句,虽然我总在提 SharedPreferences,但其实这种做法本来是先在 iOS 版的微信里应用的,后来才移植到了...我的猜测是这样的:MMKV 底层的原理是内存映射,而内存映射这种方式,它从内存往磁盘里同步写入的过程并不是实时的,也就是说并不是每次我们写入到映射的内存里就会立即从这块内存写入到磁盘,而是会有一些滞后。...先说性能问题:SharedPreferences 虽然可以用异步的方式来保存更改,以此来避免 I/O 操作所导致的主线程的耗时;但在 Activity 启动和关闭的时候,Activity 会等待这些异步提交完成保存之后再继续...SharedPreferences 如果使用同步方式来保存更改(commit()),会导致主线程的耗时;但如果使用异步的方式,给它加回调又很不方便,也就是如果你想做一些「等这个异步提交完成之后再怎么怎么样...不过如果你的团队没有在用协程,甚至没有在用 Kotlin,那 DataStore 也暂时不适合你们,因为它是完全依赖 Kotlin 协程来实现和使用的。
即文件存储、SharedPreferences存储及数据库存储。其中SharedPreferences是使用键值对的方式来存储轻量型数据,使用比较简单,且程序卸载后也会一并清除,不会残留数据。...DataStore 使用 Kotlin 协程和 Flow 以异步、一致的事务方式存储数据。...在 kotlin 文件顶层调用该实例一次,便可在应用的所有其余部分通过此属性访问该实例。这样可以更轻松地将 DataStore 保留为单例。...在您的 Kotlin 文件顶层调用该实例一次,便可在应用的所有其余部分通过此属性委托访问该实例。...SharedPreferences文件,Proto DataStore 用法相同。
前天,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 {
Security Crypto Security Crypto 库让您可以安全、轻松地加密文件和 SharedPreferences。...如果您想要加密 SharedPreferences,请用适当的密钥和方案创建一个 EncryptedSharedPreferences 对象,然后像标准 SharedPreferences 对象一样使用它即可...DataStore 带来了对最佳实践的支持,如 Kotlin 协程与 Flow 和 RxJava。...您还可以 插入 自己的序列化解决方案,比如 Kotlin Serialization。...符号处理 的实验性支持,在我们对 Kotlin 代码的基准测试中,其速度比 KAPT 提高了 2 倍,还带来了对枚举和 RxJava3 的内置支持。
将不仅仅是 Material Design 的示例应用,同时还将是一个使用了 Kotlin 的符合 Android 应用架构指南的示例应用。...因此,在决定修复 Plaid 应用 Bug 的同时,我们希望为这个项目加入 Jetpack 架构组件和引入 Kotlin 语言,使其成为一个更 "时尚" 的应用。...两个类,其中 RemoteDataSource 将用来与 API 服务交互,构造请求数据,接收响应数据;而 LocalDataSource 则会负责将数据存储在本地,存储的方式可以通过数据库,或者 SharedPreferences...如果 Repository 类只依赖于一个数据源,每次都从后端获取数据而不做任何临时存储的话,在用户离开当前页面重新返回时,应用将必须重新获取数据,即使数据未发生更改也是如此,这将会浪费宝贵的网络带宽,...使用 Kotlin (视频) Kotlin 语言有诸多特性 (如协程的 suspend 函数、扩展函数和高阶函数等) 可以帮助开发者更好的构建应用。
Kotlin 真的是一门美丽的开发语言,她拥有的一些很棒的特性使 Android 开发变成的有趣和令人兴奋。...param: String = "" set(value) { field = value.trim() } } 如果对语法不熟悉,可以参考 Kotlin...例如,我们可能想存储一些用户偏好以便让用户自定义应用的功能。普遍采用的方式是使用 SharedPreferences 来存储键值对。...我们还可以为属性提供一个默认值,以防在SharedPreferences没有找到值。 这个委托也可以使用相同的键来在SharedPreferences存储属性的新值。...总结 我们看来一些在 Android 开发中使用 Kotlin 委托属性的例子。当然了,你也可以用别的方式来使用它。 这篇文章的目标是展示委托属性是多么强大,以及我们可以用它做什么。
Kotlin 的属性代理(Property Delegate) 我们先来简单回顾下 Kotlin 的属性代理的一些基础知识和应用场景。...对 loginName 的读写等同于对 SharedPreferences 中的 "loginName" 这个 key 的读写,这个操作是不是非常方便?...我们同样可以通过被代理的属性名来查询对应 key 在 Properties 文件中的值,这个逻辑与 SharedPreferences 如出一辙,大家有兴趣可以参考这里:AbsProperties.kt...其实 Map 也是一种存储的方式,这与前面提到的 SharedPreferences 又有什么区别呢? 这样的例子我们还能列举很多,如数据库读写、文件读写甚至网络读写等等。...getValue 和 setValue 中提供了 KProperty 这个参数,我们可以通过它来获取对应属性的一些元信息,最常用的就是 name,所以我们在前面使用 Kotlin 代理 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
比如下面的代码就是lambda的应用。...利用Kotlin中的高阶函数的功能,我们能更好的解决这个问题 fun SharedPreferences.editor(f: (SharedPreferences.Editor) -> Unit) {...Kotlin可以现有的全部的Java框架和库 Java文件可以很轻松的借助IntelliJ的插件转成kotlin Kotlin应用广泛 Kotlin对Android应用开发支持广泛,诸多工具,比如kotterknife...读到这里,是不是想要尝试一下Kotlin呢,它简洁的语法,汇集诸多特性,高效率实现等等,已经在国外风生水起,国外的Pintereset, Square, Flipboard等公司已经开始应用到生产中。...篡改Python的一句名言“人生苦短,我用Kotlin”,这样一个高效实用的语言应该会被越来越多的团队所接受,并应用到开发生产中。当然也希望在国内环境下大放异彩。
在 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。
Jetpack DataStore 基于 Kotlin 协程和 Flow 开发,并提供两种不同的实现: Proto DataStore 和 Preferences DataStore。...SharedPreferences 和 DataStore 对比 ?...在您应用的任何地方,每当 Service 或 Activity 启动或停止时,就会触发等待 fsync() 的调用。...该函数与 updateData() 一样,会在转换代码块完成之后将修改应用到磁盘,并且当数据在磁盘上完成存储时,此协程就会完成。...DataStore 包含使用 Kotlin 协程和 Flow 实现的完全异步 API,可以处理数据迁移、保证数据一致性,并且可以处理数据损坏。
它速度更快,而且兼容Kotlin,还能可控的抛出异常。...当RxJava跟Kotlin结合的时候,两者的优点被一起放大,会让开发者爱不释手。...New way to create bundle */ bundleOf { "key1" to item1 "key2" to item2 } /* Better way to use SharedPreferences...*/ sharedPreferences.edit { putString("key1", "value1") putString("key2", "value2") } Android KTX...关于Dagger,google有一个著名的咖啡机的例子可以了解一下,我之前也发过几篇分析的文章,可以了解一下Dagger2应用:接入Dagger2 Android应用:@Component和@ModuleDagger2
可能一些应用程序不需要保存用户的进度信息,但是用户对于应用程序的设置信息一定要保存。很多应用需要保存大量的数据到数据库或者文件里,比如看电视的应用,需要保存大量的频道信息。...每一个SharedPreferences文件都被Android framework管理,可以是只能创建它的应用程序访问,也可以分享给其他应用程序。怎么用SharedPreferences保存数据呢?...注意:当你给SharedPreferences起名字的时候最好是复杂点的,这样就能保证不会有名字重复却属于不同应用程序的SharedPreferences,最好是以你的应用包名再加上其他构成,比如"com.example.myapp.PREFERENCE_FILE_KEY...方法有返回值,返回值是一个boolean变量,表示你的保存动作是否成功,apply是没有返回值的,所以如果你不需要返回值,也不关心提交是否成功可以用apply来代替commit; 2、apply是先把数据更改提交到内存...,然后再异步保存到磁盘上,而commit这两个操作是同步的,所以在进行频繁提交数据更改时apply更为高效; 读取数据从Shared Preferences文件: 从Shared Preferences
领取专属 10元无门槛券
手把手带您无忧上云