首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android Jetpack - Room

这样,当设备无法访问网络,用户仍然可以离线浏览该内容。...使用@Database注释的类应满足以下条件: 继承了 RoomDatabase 的抽象类 注解包含与数据库相关联的实体类列表 包含一个无参抽象方法,并返回使用 @Dao 注释的类。...然后,应用程序使用每个 DAO 从数据库获取实体,并将对这些实体的任何更改保存回数据库。最后,应用程序使用实体来获取和设置与数据库的表列对应的值 Room 组件关系图 ?...UI 阻塞,一些比较耗时的操作如 insert ,可以使用 suspend 关键字修饰,然后利用协程非 UI 线程执行此方法 @Dao interface WordDao { @Insert...codelabs/android-room-with-a-view-kotlin https://developer.android.com/reference/android/arch/persistence

1.9K70

Now in Android | 12 月刊 · 2019

Flow: 为了完善前一个发布版本对协程的使用,Room 现在支持将 Flow 作为 DAO 返回类型。...学习课程和开发指南 Udacity 课程 ? △ 使用 Kotlin 进行 Android 进阶开发 Udacity 现已推出全新的免费课程: 使用 Kotlin 进行 Android 进阶开发。...这套课程涵盖了 Android 开发过程的各种进阶问题,包括通知、定制视图、动画、映射、测试,以及使用 Firebase UI 登录等等。 Codelabs ?...△ 使用 Kotlin 进行 Android 进阶开发的 Codelabs 列表 我们还为各位开发者们准备了一系列新的 Codelabs,组成了一个 "使用 Kotlin 进行 Android 进阶开发...课程主页: 使用 Kotlin 进行 Android 进阶开发: codelabs.developers.google.com/advanced-an… 另外我们还推出了使用 Dagger 进行依赖注入的

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

上手使用 Room Kotlin API

本文中我会告诉大家如何使用并且测试 Room Kotlin API,同时介绍过程,我也会为大家分享其工作原理。 我们将基于 Room with a view codelab 为大家讲解。...developer.android.google.cn/codelabs/android-room-with-a-view-kotlin#0 定义数据库表 我们的数据库仅有一个表,就是保存词汇的表。...@Insert suspend fun insert(word: Word) 底层 Room 生成了 Dao 抽象函数的实现代码。...当实现 Dao 测试的时候,每个测试运行之前,我们创建数据库。当每个测试运行后,我们关闭数据库。由于我们并不需要在设备上存储数据,当创建数据库的时候,我们可以使用内存数据库。...://developer.android.google.cn/codelabs/android-room-with-a-view-kotlin#0 ----

1.5K10

Kotlin Vocabulary | 揭秘协程suspend 修饰符

Kotlin 协程把 suspend 修饰符引入到了我们 Android 开发者的日常开发。您是否好奇它的底层工作原理呢?编译器是如何转换我们的代码,使其能够挂起和恢复协程操作的呢?...如果您是 Android 平台上协程的初学者,请查阅下面这些协程 codelab: Android 应用中使用协程 codelabs.developers.google.com/codelabs/...ko… 协程的进阶使用: Kotlin Flow 和 Live Data codelabs.developers.google.com/codelabs/ad… 协程 101 协程简化了 Android...使用不同的 Dispatcher 您可以不同的 Dispatcher 间切换,从而做到不同的线程执行计算。那么 Kotlin 是如何知道从哪里开始恢复挂起的计算的呢?...编译器将每个挂起函数转换为一个状态机,每次函数需要挂起使用回调并进行优化。

2.2K10

Android 开发中使用协程 | 上手指南

为了能够避免协程泄漏,Kotlin 引入了结构化并发 (structured concurrency) 机制,它是一系列编程语言特性和实践指南的结合,遵循它能帮助您追踪到所有运行于协程的任务。... Android 平台上,我们可以使用结构化并发来做到以下三件事: 取消任务 —— 当某项任务不再需要时取消它; 追踪任务 —— 当任务正在执行时,追踪它; 发出错误信号 —— 当协程失败,发出错误信号表明有错误发生...推荐您阅读 Android 开发者文档 "将 Kotlin 协程与架构组件一起使用" 了解更多。...还记得我一开始说的结构化并发是一系列编程语言特性和实践指南的集合, suspend 函数引入无关联协程作用域违背了结构化并发规则。...同样,我还帮助您更深入去理解和使用 suspend 函数,通过确保它们函数返回之前完成任务,或者是通过暴露异常来确保它们正确发出错误信号。

1.4K20

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

这里再简单说一下,通过 Database Inspector ,你可以 Android Studio 快速查看和修改你的数据库表数据,除此之外,你也可以执行 Sql 语句。...如果你使用的是 Room 数据库,你还可以直接执行你的 Dao 文件的 Sql 语句。 另外说一点,我的文章是基于 Android Studio Canary 5 写的。...最新的 Android Studio Canary 6 ,已经支持了 Live Update 功能,即你再修改表数据之后,UI 页面会自动刷新,而之前你必须得手动刷新才能看到修改。...目前 Kotlin 支持的重载操作符有这些。 Kotlin 一些方面留给了开发者很大的自由发挥空间,像操作符重载,扩展函数等。...关于 Android 11 定位功能的相关变化,在前面几期的 Now in Android 已经做过介绍。

1.2K20

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

本文是介绍 Android 协程系列的第三部分,这篇文章通过发送一次性请求来介绍如何使用协程处理实际编码过程遇到的问题。...阅读本文之前,建议您先阅读本系列的前两篇文章,关于 Android 开发中使用协程的背景介绍和上手指南。...数据层 (网络或数据库) 总是会提供挂起函数,使用 Kotlin 协程的时候要保证这些挂起函数是主线程安全的,Room 和 Retrofit 都遵循了这一点。...我们实现了如何在 ViewModel 启动协程,然后 Repository 和 Room Dao 中提供公开的 suspend function,这样形成了一个完整的编程范式。...对于大部分任务来说, Android使用 Kotlin 协程按照上面这些方法就已经足够了。

1.1K10

Hilt-依赖注入框架上手指南

@AndroidEntryPoint 其会创建一个依赖容器,该容器遵循Android类的生命周期 @Inject 用来注入的字段,其类型不能为Private 如果要告诉 Hilt 如何提供相应类型的实例...netDataSource = NetDataSource() } } 这样用没有什么问题,我们大多数时候都是这样干的,当然kt也可以使用 by lazy,不过具体看你自己的场景了。...netDataSource.test() } } 这样就结束了吗,如果这样使用,那么就会直接报错,因为Hilt代码生成需要访问所有模块,所以必须使用 @HiltAndroidApp 标注你的基类...注意:Kotlin,仅包含@Provides函数的模块可以是object类。这样,提供程序就可以得到优化,并且几乎可以内联在生成的代码。...@Provides 常用于模块 举个: room的常规用法 我们使用room,有一个数据库表和相应的Dao @Entity(tableName = "book") class Book(val name

1.6K10

使用协程和 Flow 简化 API 设计

如果您是库作者,您也许希望用户使用 Kotlin 协程与 Flow 可以更加轻松地调用您基于 Java 或回调的 API。...回调 回调是实现异步通讯非常常见的做法。事实上,我们 后台线程任务运行指南 中将回调作为 Java 编程语言的默认解决方案。然而,回调也有许多缺点: 这一设计会导致令人费解的回调嵌套。... Kotlin ,您可以简单地使用协程调用回调,但前提是您必须创建您自己的适配器。 创建您自己的适配器 如果没有找到适合您用例的适配器,更直接的做法是自己编写适配器。...有关 Continuation 的更多信息,请参阅: Kotlin Vocabulary | 揭秘协程suspend 修饰符。...,请参阅这篇: Kotlin Vocabulary | 揭秘协程suspend 修饰符。

1.6K20

开始迁移到 Kotlin | Kotlin 迁移指南 (中篇)

我们于近期开始连载了关于 Kotlin 迁移指南的系列文章,帮助开发者们顺利迁移并开始使用 Kotlin 构建 Android 应用。...Java) 使用 Kotlin 编写新代码 将现有代码更新为 Kotlin 代码 将现有代码更新为 Kotlin 代码Android Studio 提供了 Java 转 Kotlin 的工具,只需要在菜单中选择...△ Android Studio 的 Lint 检查也可以打开 Kotlin 互操作检查 Kotlin 调用 Java ,有几点需要注意: 请将代码标记为 @Nullable 和 @NotNull...使用属性前缀 (getName(), setName(), isActive()) 避免使用 Kotlin 的保留关键字 (when, is, 等) 更详细的 Kotlin 互操作指南请查阅 Android...“重构为 Kotlin” Codelab: developer.android.google.cn/codelabs/ja… “使用 Kotlin 开发 Android 应用” 的官方文档。

19710

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

将不仅仅是 Material Design 的示例应用,同时还将是一个使用Kotlin 的符合 Android 应用架构指南的示例应用。...本文将为大家分享和总结 Android 团队工程师们重写 Plaid 应用时的实践经验,前面部分将着重分享应用的分层设计,后面部分是具体使用 Kotlin 实现的视频,扩展阅读部分提供了更多 Plaid...不过,我们有失去也有得到: Kotlin 作为 Android 官方的首要支持编程语言这一重大的消息 17 年 Google I/O 公布。...比如可以通过使用 Android App Bundles 动态增添新的新闻源,使用新的 AndroidX 库,使用 Jetpack,遵循 Android 应用架构指南构建应用等。...使用 Kotlin (视频) Kotlin 语言有诸多特性 (如协程的 suspend 函数、扩展函数和高阶函数等) 可以帮助开发者更好的构建应用。

43240

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

将不仅仅是 Material Design 的示例应用,同时还将是一个使用Kotlin 的符合 Android 应用架构指南的示例应用。...本文将为大家分享和总结 Android 团队工程师们重写 Plaid 应用时的实践经验,前面部分将着重分享应用的分层设计,后面部分是具体使用 Kotlin 实现的视频,扩展阅读部分提供了更多 Plaid...不过,我们有失去也有得到: Kotlin 作为 Android 官方的首要支持编程语言这一重大的消息 17 年 Google I/O 公布。...比如可以通过使用 Android App Bundles 动态增添新的新闻源,使用新的 AndroidX 库,使用 Jetpack,遵循 Android 应用架构指南构建应用等。...使用 Kotlin (视频) Kotlin 语言有诸多特性 (如协程的 suspend 函数、扩展函数和高阶函数等) 可以帮助开发者更好的构建应用。

83830

Android 开发中使用协程 | 背景介绍

Kotlin 的协程提供了一种全新处理并发的方式,您可以 Android 平台上使用它来简化异步执行的代码。...Kotlin 使用堆栈帧来管理要运行哪个函数以及所有局部变量。暂停协程,会复制并保存当前的堆栈帧以供稍后使用。恢复协程,会将堆栈帧从其保存位置复制回来,然后函数再次开始运行。...使用协程保证主线程安全 Kotlin 的协程,主线程调用编写良好的 suspend 函数通常是安全的。不管那些 suspend 函数是做什么的,它们都应该允许任何线程调用它们。...类似于 Retrofit 和 Volley 这样的网络库会管理它们自身所使用的线程,所以当您在 Kotlin 协程调用这些库的代码不需要专门来处理主线程安全这一问题。...接下来的文章我们将继续探讨协程 Android 是如何使用的,感兴趣的读者请继续关注。

1.5K30

使用 WorkManager 处理需要立刻执行的后台任务

当需要执行长时间运行的任务,而应用处于后台状态,您会遇到 后台执行限制,该特性是 Android 8.0 之后增加的。我们鼓励开发者进行行为变更以提升整个平台的用户体验。...为了不同的使用场景更易于适配,我们通过对 WorkManager 添加功能,提升了开发者遵循后台任务限制方面的体验。 我们推荐使用 WorkManager 处理需立即执行的长时间运行任务。...和前台服务的详细指南,以及主题更多信息,请查阅: WorkManager 的高级指南|支持长时间运行的工作器 后台处理指南 Android 上的 Kotlin 协程 WorkManager 系列文章助您了解...WorkManager 从基础到高级的各项特性: Android Jetpack WorkManager | Android 中文教学视频 WorkManager Kotlin 的实践 WorkManager...: 周期性任务 自定义 WorkManager —— 基础概念 使用 Dagger 自定义 WorkManager Google IssueTracker 提交所遇到的任何问题,这将帮助我们第一间优化特性和修复漏洞

87220

Android Jetpack - LiveData

例如,后台活动返回前台后立即接收最新数据 配置更改友好 如果由于配置更改(例如设备轮换)而重新创建活动或片段,则会立即接收最新的可用数据 资源共享 你可以使用单例模式扩展 LiveData 对象以包装系统服务...在数据变动及时通知 Observer,这一步通常在 UI 控制器完成 注意:你可以使用 observeForever(Observer) 方法注册没有关联 LifecycleOwner 对象的观察者...与 Room 一起使用 LiveData Room 持久化库支持可观察查询并返回 LiveData 对象,这些查询一般 DAO 编写 更新数据库,Room 会生成更新 LiveData 对象所需的所有代码...具体可以参考 Android Jetpack - Room 一文所提供的代码示例 转换 LiveData 您可能希望将 LiveData 对象分派给观察者之前更改存储 LiveData 对象的值,.../topic/libraries/architecture/livedata https://codelabs.developers.google.com/codelabs/android-room-with-a-view-kotlin

2K30

使用 Kotlin 构建 Android 应用 | Kotlin 迁移指南 (上篇)

接下来的几周我们将会为大家连载关于 Kotlin 迁移指南的系列文章,包含 Kotlin 的优势和介绍 (上篇)、迁移到 Kotlin (中篇),以及使用 Kotlin 的常见问题 (下篇),帮助开发者们顺利迁移并开始使用...Kotlin 里的协程可以理解为从语言级别实现了异步或非阻塞编程,并在 Kotlin 1.3 开始提供, Android使用协程可以避免下面的问题: 通过主 (界面) 线程进行调用时可以确保安全...(比如在主线程异步访问数据库) 避免主线程上运行耗时较长的任务 (如图像或网络操作) 发生阻塞 比如下面这个例子,使用协程不会对主线程造成阻塞,并可提高可读性: // 使用回调 fun getData...△ Kotlin 推进的时间表 使用 Kotlin 更快速地编写更棒的 Android 应用,自两年前 Android 平台开始支持使用 Kotlin 语言后,我们一直努力丰富使用 Kotlin 构建的体验和开发效率的提升...x Jetpack 推荐开发者使用 Kotlin 构建应用的同时,Android 团队自己也大规模的使用 Kotlin,比如下面要跟大家介绍的 Jetpack 库Kotlin 特性的使用:

1.2K20

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

前面我们使用Java来运用JetPack的一系列组件,又使用kotlin运用这些组件实现了一系列功能: kotlin--Flow文件下载 kotlin--Flow结合Room运用 kotlin--Flow...结合retrofit运用 kotlin--StateFlow运用 kotlin--SharedFlow运用 接着,Jetpack的Paging3,我们使用的语言是kotlin,相信通过这些项目的对比,...Jason老师的辛勤付出,动脑学院B站上也有投稿koltin基础的视频,通过视频可以快速学习和上手kotlin 今天来综合使用各种组件,搭建最新MVVM项目框架,利用Paging3实现列表功能,Paging3...Append:加载更多数据触发 Prepend:列表头部添加数据触发,Refresh触发也会触发 第一步就需要判断LoadType的状态,如果是Refresh,那么数据库没有数据,就要从网络获取数据...binding.refreshLayout.isRefreshing = it.refresh is LoadState.Loading } } 十、App Starup实现无网络数据组件初始化 RemoteMediator可以无网络从数据库获取数据

3.3K30

Kotlin 协程和 Android SQLite API 的线程模型

从 Room 2.1 版本之后,开发者们可以通过定义 suspend DAO 函数来使用 Kotlin 协程了。...我们为 Room 添加协程的支持期间,我们遇到并解决了协程模型和 Android SQL API 没想到的一些问题。本篇文章,我们会向您阐述我们遇到的这些问题,以及我们的解决方案。...这一点很重要,因为 executor 可以由用户来配置,并且可作为测试工具使用事务开始,Room 会获得 executor 某个线程的控制权,直到事务结束。...Room 的阻塞函数,包含 DAO 生成的那些,它们被事务协程调用后会被特殊处理,用来保证它们不会在其他的调度器上运行。... SQLite 的线程限制是合理的,这在 Kotlin 还没出现时已然如此设计了。

1.8K20
领券