展开

关键词

使用 Kotlin Symbol Processing 1.0 缩短 Kotlin

作者 / 软件工程师 Ting-Yuan Huang 和 Jiaxiang Chen Kotlin Symbol Processing (KSP)——用于在 Kotlin轻量级编译器插件的全新工具已推稳定版 在过去的几个月里,KSP 共发布了 32 个版,超过 162 个来自社区反馈的问题被修复。如果您正期待着应用该工具,那在是候去尝试了。 为何要 KSP 在 Android 团队中,我们经常会向开发者提这样一个问题: 就阶段而言,开发应用遇到的最大痛点是什么?其中最频繁的问题就是速度。 但是创这些根的成很高,这意味着编译器必须多次解析程序中的所有符号 (一次生成根,另一次完成实际编译)。 KSP 不使用根生成模型,而是作为 Kotlin 编译器插件运。 此举大幅提升了速度 (对于 RoomKotlin 测试应用 而言速度提高了 2 倍),同也意味着 KSP 可以在非 Android 以及非 JVM 环境 (如 Kotlin/Native 和

10410

上手使用 Room Kotlin API

这里我们会创一个在数据库的词汇表,然后将它们显示到屏幕上,同用户还可以向列表中添加单词。 该对象来自数据库您所提供的器,或者默认使用 Architecture Components IO Executor。 同数据插入调用一样,这里的分发器来自数据库您所提供的器,或者来自默认使用的 Architecture Components IO 器。 当每个测试运后,我们关闭数据库。由于我们并不需要在设备上数据,当创数据库的候,我们可以使用内数据库。也因为这仅仅是个测试,我们可以在主线程中运请求。 比如您可以指定 Room 如何处理数据库冲突、可以通过创 TypeConverters 原生 SQLite 无法的数据类型 (比如 Date 类型)、可以使用 JOIN 以及其它 SQL 功能实复杂的查询

14210
  • 广告
    关闭

    对象存储COS专场特惠,1元礼包限时抢

    一站式解决数据备份、共享、大数据处理、线上数据托管的云端存储服务,新用户享四重好礼

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Room & Kotlin 符号的处理

    它通过处理代码注解和生成 Java 源代码的方式,实上述为。 注解处理器非常强大,但它们会增加间。 有的 Room 代码库是为了处理 Java 源代码而写的。当应用是由 Kotlin 编写Room 只能识别该 Kotlin 在 Java 根中的样子。 您需要考虑到各种可能的开发者,并确保如实报告消息。 将每个 Room 的编译测试迁移到新的 API,一旦发新的 KSP / X-Processing ,就会上报,然后实施临解决方案;这一动作反复进。 一旦编译测试覆盖情况较好,我们在下一步就会使用 KSP 运 Room 的 集成测试。这些是实际的 Android 测试应用,也会在运测试其为。

    5630

    Kotlin Symbol Processing (KSP) Alpha 版已发布

    为何推 KSP? Kotlin 开发者向我们反馈最多的需求就是提高速度。许多开发者每天都要迭代并部署数十次应用,所以速度缓慢会使开发者不得不将大量间耗费在等待上。 诸如 Room 等注释处理器在 Android 平台无处不在,它们依赖于通过 Kotlin 注释处理工具 (KAPT) 实的 Java 注释处理兼容性。 在设计 KSP ,我们考虑了如果从头开始Kotlin 的注释处理应是怎样的形式。 实际上,利用 Room的初始基准测试表明,KSP 相比 KAPT 速度提高了 2 倍左右。 自去年 6 月的开发者预览版发布以来,我们已经解决了超过 100 项和问题,其中数十项都来自优秀的 Kotlin 库开发者社区的反馈。

    37520

    Android Jetpack 更新一览

    这个版的特点是使用 Kotlin 完全重写,对协程和 Flow 有一流的支持,用 RxJava 和 Guava 原语进异步加载,并对库和表层进了全面改进。 例如,您可以将一个消息 (Message) 模为一个模式类型,其中包括主题、正文和发件人等数据。 使用器来创模式类型的文件,然后将它们添加到中。 △ Android S+ 上的集中,用于整合到全设备搜索中 Room Room 是我们推荐大家采用的数据持久层,在平台上提供更多的可用性和安全性。 当您的数据库模式发生变化,您在可以声明一个 @AutoMigration,指您想从哪个版迁移到哪个版Room 就会为您生成迁移结果。 Room 还引入了 QueryCallback 类,用于在 SQLite 语句提供回调,以简化日志等任务。

    7620

    Android 开发中使用协程 | 代码实战

    它使用 LiveData 来当前排序的列表数据,以供 UI 进展示。当某个新事件,sortProductsBy 会启动一个新的协程对列表进排序,当排序完成后更新 LiveData。 ,此应用中,所有内容都 Room 数据库中,它为 @Dao 提供了针对不同排序具有不同功能的两个接口。 第一个 bug 了 在经过测试后,您部署到了生产环境,运了几周都感觉良好,直到您收到了一个很奇怪的 bug 报告: 标题: ? — 排序报告: 当我非常快速点击排序按钮,排序的结果偶尔是的,这还不是每次都能复的?。 您研究了一下,不禁问自己哪里了? 如果已经在了正在运的请求,它会等待这个请求完成,并将结果直接返回。只有不在正在运的请求才会创新的请求来代码块。

    28610

    【翻译】Realm , ObjectBox ,还是 Room ,哪个适合你?

    当面对数据候,安卓开发者有太多的类库可选。不论是处理少量对象,还是一个大型的数集,这些工具都能完成使命,等着我们去使用。 Room 在官方的架指南中占据着一个中心位置,它提供在 SQLite 上的一个抽象层,允许在充分利用 SQLite 的强大基础上进流畅数据库访问开发。 不过不要担心, Room 包含的一些安全特性,能够提示你万一的那些令人讨厌的。 Entity :这个组件代表了数据库中一数据的类。对于各个实体,数据库中的表的创就是为了它们的实例。你必须通过数据库类中的实体数组来引用实体类。 查询生成器:使用 ObjectBox 查询对象和编译检查都非常简单。 数据关联:对象的引用/关联是内的内部类型,它们都属于原生引用。

    1.9K30

    Android Jetpack - Room

    Room 简介 Room 持久化库提供了一个基于 SQLite 的抽象层,以便在利用 SQLite 的全部功能的同更强大的数据库访问 Room 库帮你的 App 在设备上创一个缓,并作为此 App 的单一事实来源,允许用户在应用内查看关键信息的一致副,无论用户是否具有互联网连接 处理重要数量的结化数据的应用程序可以从数据中受益匪浅。 最常见的用例是缓相关的数据。这样,当设备无法访问网络,用户仍然可以在离线浏览该内容。 Repository 类抽象对多个数据源的访问。库不是体系结组件库的一部分,但是议的代码分离和体系结的最佳实践。 在最常见的示例中,Repository 实了用于决定是从网络获取数据还是使用在数据库中缓的结果的逻辑,既避免了 ViewModel 和数据的直接交互又统一了单一真实数据源的逻辑 Repository

    83470

    Kotlin 和 Jetpack 视频合集 | MAD Skills

    我们介绍了多种不同的方法,让 Android 代码更具表力、更简洁、更安全以及更易于使用 Kotlin异步代码。 上手使用 Room Kotlin API 视频打开了 Room 的大门,一探如何在 Kotlin 中创 Room 表和数据库,以及如何使用 Flow 实插入和使用可观察的查询等一次性挂起操作。 使用协程和 Flow Room 会为您将所有数据库操作移至后台线程。您可以观看 视频 或阅读 之前的文章,了解如何实和测试 Room 查询。 使用 WorkManager Kotlin API 视频通过 WorkManager 让您的工作更轻松。即使应用关闭或设备重启,也能够成功调度异步任务,使其立即或者推迟。 我们回答了大家在 YouTube、Twitter 和其他方提的问题。您可以 点击这里 观看视频。

    8920

    Now in Android 14 —— 最新 Android 动态分享

    Kotlin 编译器通过识别 Java 中的 @Nullable 和 @NonNull 注解,来判断对象是否可空,从而在编译期就发可能在的空指针。 ,并不会直接抛。 模拟器在支持前后摄像头了。 这是一个完全面向开发者的版,也是测试你的应用的好机。谷歌也提供了一个新的设置选项页面,来帮助你测试各种为变化对你的应用产生的影响。 该权限将授权读写所有共享内容,这也将同包含非媒体类型的文件。但是对于其他应用的私有目录,还是无法访问的。 v=77hfjIYwouw&feature=emb_logo 讨论了使用 Kotlin 集合 进计算和使用 序列 进延迟计算的场景。

    17920

    使用 Jetpack DataStore 进数据

    其中 Proto DataStore,可以带有类型的对象 (使用 protocol buffers 实);Preferences DataStore,可以键值对。 在 DataStore 中,数据以异步的、一致的、事务性的方式进,克服了 SharedPreferences 的大部分缺点。 ** SharedPreferences 在分析会抛异常。 ,并且所有的数据操作都会在 Dispatchers.IO 上。 只需要传入 SharedPreferences 所使用的名字就可以了。

    11710

    上手使用 Room Kotlin API

    该对象来自数据库您所提供的器,或者默认使用 Architecture Components IO Executor。 同数据插入调用一样,这里的分发器来自数据库您所提供的器,或者来自默认使用的 Architecture Components IO 器。 当实 Dao 测试的候,在每个测试运之前,我们创数据库。当每个测试运后,我们关闭数据库。由于我们并不需要在设备上数据,当创数据库的候,我们可以使用内数据库。 ,Room 提供了非常多的功能性和灵活性,远远超文所涵盖的范围。 比如您可以指定 Room 如何处理数据库冲突、可以通过创 TypeConverters 原生 SQLite 无法的数据类型 (比如 Date 类型)、可以使用 JOIN 以及其它 SQL 功能实复杂的查询

    9030

    Now in Android | 12 月刊 · 2019

    速度更快的 (相信这正是大家想要的): 注解处理器的增量优势在也被用在了 Room 上 。这个功能在还没有默认启用,但大家可以在自己的中做一些设置来启用这个功能,从而提升速度。 △ 使用 Kotlin Android 进阶开发 Udacity 已推全新的免费课程: 使用 Kotlin Android 进阶开发。 课程主页: 使用 Kotlin Android 进阶开发: codelabs.developers.google.com/advanced-an… 另外我们还推了使用 Dagger 进依赖注入的 为了更加扎实指导大家编写 Android 应用,我们推荐大家采用 Dagger 来进 DI 操作。 在大家可以使用专门为它的设计工具来创动画了。

    33230

    kotlin--综合运用Hilt、Paging3、Flow、Room、Retrofit、Coil等实MVVM架

    前面我们使用Java来运用JetPack中的一系列组件,又使用kotlin运用这些组件实了一系列功能: kotlin--Flow文件下载 kotlin--Flow结合Room运用 kotlin--Flow Jason老师的辛勤付,动脑学院在B站上也有投稿koltin基础的视频,通过视频可以快速学习和上手kotlin 今天来综合使用各种组件,搭最新MVVM项目框架,利用Paging3实列表功能,Paging3 } 1.MediatorResult load函数需要一个MediatorResult类型的返回值,MediatorResult有三种返回参数: MediatorResult.Error(e): ,Refresh状态下load函数完毕后会自动再次调用load函数,此的LoadType为Append,此数据库中有数据了,直接返回Success通知Pager可以从数据库取数据了 { : 联动.gif 九、刷新 1.上拉刷新、重试按钮、信息 上拉刷新、重试按钮、信息布局文件如下: <?

    23430

    Google 推荐在 MVVM 架中使用 Kotlin Flow

    Google Android 团队宣布了 Jetpack 的视图模型之后,它已经成为了Android 开发模式最流的架之一,如下图所示: ? Kotlin Flow 在数据源中的使用 在 [PokemonGo](https://github.com/hi-dhl/PokemonGo) 项目中,进入详情页,会检查是否有数据,如果没有会去请求 [pokeapi] (https://pokeapi.co/)详情页接口,获得最新的数据,然后在数据库中。 ,在 liveData{ ... } 中协程代码 collect 是末端操作符,收集 Flow 在 Repositories 层发射来的数据 最后调用 LiveData 中的 emit() 方法更新 结语 致力于分享一系列 Android 系统源码、逆向分析、算法、翻译、Jetpack 源码相关的文章,正在努力写更好的文章,如果这篇文章对你有帮助给个 star,文章中有什么没有写明白的方,或者有什么更好的议欢迎留言

    63820

    Android组件的最新进展 (下篇)

    其中 androidx.* 库与 Framework API 解耦,这能够提供向后兼容的同,也能更频繁更新。 Android Jetpack 中的架组件可帮助您设计稳健、可测试且易维护的应用。 这里我们分上下两篇介绍架组件的最新更新,如果您还没有阅读文的上篇,请点击这里查看《Android组件的最新进展 (上篇) 》。 为了让分页的使用更加便捷,在不久未来的版里我们将提供: 内置的网络支持,而且提供处理机制 Header 和 Footer 支持 更好的 RxJava 支持以及协程的集成 Room 持久性库 Room 是一个在 SQLite 上提供抽象层的持久库,您可以回顾我们之前的介绍文章了解更多 Room 的详细信息。 接下来会实增量注解处理,提高速度,另外也会进一步提升关系数据的处理效率,并提升数据迁移的便利性。

    26120

    开发必须了解的10个Android

    它速度更快,而且兼容Kotlin,还能可控的抛异常。 开发者更愿意看到实更新的UI,换句话说他们更愿意看到UI能随着数据的变化而自动更新。 当我们在处理数据的候,通常在切换线程和,还有在多个API之间调用的候情况会变的复杂。 它把Kotlin上很多不的Feature都移植了过去,包括命名参数,lambda表达式,默认参数值。 KTX改变了开发者使用Android API的方式,如果你的项目使用的是Kotlin,那么它应该成为你的核心库之一。 Dagger 没有Dagger的排榜不完整。 简单的话拿汽车作为例子,你可以轻易的更换轮胎的类型而不需要对汽车身做什么修改。 对于大型项目来说,开发者不希望手工去处理依赖注入,因为这不容易维护。Dagger通过注解帮开发者完成了这些事情。

    1.5K50

    AndroidStudio 开发基础知识【翻译完成】

    生命周期感知教程 四十、导航架组件概述 四十一、安卓 Jetpack 导航组件教程 四十二、在安卓系统上创和管理溢菜单 四十三、运动布局介绍 四十四、安卓运动布局编辑器教程 四十五、运动布局的关键周期教程 六十四、可折叠装置和多窗口支持 六十五、安卓 SQLite 数据库概述 六十六、安卓 Room 持久化库 六十七、安卓表格布局和表格教程 六十八、安卓 Room 数据库和仓库教程 六十九、使用安卓访问框架访问云 七十、安卓访问框架示例 七十一、使用视频视图和媒体控制器类在安卓系统上播放视频 七十二 安卓画中画模式 七十三、安卓画中画教程 七十四、安卓系统中的运权限请求 七十五、使用MediaPlayer 六十四、安卓 Kotlin 协程示例 六十五、安卓服务概述 六十六、实安卓启动服务——一个成功的例子 六十七、安卓绑定服务——一个成功的例子 六十八、安卓远程绑定服务——一个成功的例子 六十九、 数据库和仓库教程 七十六、使用安卓访问框架访问云 七十七、安卓访问框架示例 七十八、使用视频视图和媒体控制器类在安卓系统上播放视频 七十九、安卓画中画模式 八十、安卓画中画教程 八十一、安卓系统中的运权限请求

    6030

    Android数据库高手秘籍(十一),LitePal支持事务功能了

    这次在开发新版之前,我将这些提的bug全部都进了修复,保证这是一个更加稳定的版。 那么在LitePal的GitHub中还剩下多少issue呢?给大家看一下: ? 没,就只剩下一个了。 是的,使用哪种编程语言就引入哪个库,我来认为这是一件很好的事情,然而没过多久我就后悔了,这是一个非常的决定。 将库分成了Java和Kotlin两个版之后,它们又会共同引入Core库来作为依赖,Core库是主业务逻辑实方。 我特别感谢向我提议的这些朋友们,可以说在很大程度上,LitePal的版迭代更新都是在你们的议基础上进的。 但是,迭代了这么多版之后,我回过头来反思一下,是不是每一个议都值得采纳呢? 是的,saveAll方法内部开启了事务,要么全部成功,要么全部失败,不会部分成功的情况,这样可以避免很多使用saveAll方法产生的解。

    36120

    FAQ | 使用 Kotlin Android 开发

    "如果已经掌握了 Java 基础知识,在适合改用 Kotlin Android 开发吗?" 协程的一流支持,从而转变了在 Android异步操作的方式。 如果您对当前的代码库和技术栈感到满意,能熟练使用您的解决方案来管理异步任务,并且具有高效的捕获方法,那么迁移到 Kotlin 对您来说可能不是合适的解决方案。 既包含面向 没有编程经验 的初学者新开设的在线课程 使用 Kotlin Android 应用的基础知识,也有讲解如何 使用协程 的高级教程,帮助您提升使用 Kotlin Android 开发的技能 自从 3 年前正式增加对 Kotlin 的支持以来,我们一直在加大力度对这一色的语言和生态系统进支持。

    7330

    相关产品

    • 云服务器

      云服务器

      云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。 腾讯云服务器(CVM)为您提供安全可靠的弹性云计算服务。只需几分钟,您就可以在云端获取和启用云服务器,并实时扩展或缩减云计算资源。云服务器 支持按实际使用的资源计费,可以为您节约计算成本。

    相关资讯

    热门标签

    扫码关注云+社区

    领取腾讯云代金券