前面我们使用过Paging,最新版本Paging3和以前对比,有所改动 Paging2->Paging3三个模块改为: 1.DataSource->PagingSource : 数据从该模块中获取,数据可以来源于网络...的adapter需要继承它,内部做了一系列处理 一、paging3上手 效果: 1.首先配置gradle 使用kapt插件 plugins { id 'kotlin-kapt' } DataBinding...import com.aruba.paging3application.databinding.ActivityMainBinding import com.aruba.paging3application.viewmodel.MovieViewModel...import com.aruba.paging3application.adapter.MoviePagingAdapter import com.aruba.paging3application.databinding.ActivityMainBinding...import androidx.paging.PagingConfig import androidx.paging.cachedIn import com.aruba.paging3application.paging.MoviePagingSource
在用DataBinding时要注意DataBinding访问的是静态方法 在Kotlin中就要用companion object和@JvmStatic class ImageViewBindingAdapter...} else{ imageView.setBackgroundColor(Color.GRAY) } } } } Paging3...分页数据错乱的问题 在计算paging的prevKey和nextKey,也就是上一页,下一页的时候,需要考虑PagingConfig中的initialLoadSize参数 fun loadMovie()...return Pager( config = PagingConfig( pageSize = 8, //第一次加载的数量,16也就是2页,默认是3*...缓存数据要在属性中 还有就是Paging返回的是flow,需要用cachedIn(viewModelScope)来让Paging的flow的生命周期和ViewModelScope的生命周期保持一致,也就是和
前言 许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页库Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接: Android JetPack系列文章 ,持续更新中...Paging是什么 想想我们之前的业务中,实现分页加载需要怎么处理?...而Paging3是Paging库当前的最新版本,仍处于测试版本,相比较于Paging2的使用就简洁多了。...return try { netWork.getData(pageId) } catch (e: Exception) { //在这里处理或捕获异常...当然在实际开发中,上面的代码会有很多问题,以及Paging为我们提供了更多且有用的功能,我们将在下一篇中继续为大家分享~ Android Jetpack系列 之分页库Paging3(二)~敬请期待
+ MVVM 实战应用,和神奇宝贝(PokemonGo) 有很多不同之处,神奇宝贝(PokemonGo) 主要偏向于 Paging3 的分页处理,以及 Flow 在 MVVM 中的实战。...在 Google 发布的 Jetpack 的最新成员 Paging3,在其内部的源码实现也是使用的 Flow,关于 Paging3 的使用可以参考以下链接: Jetpack 成员 Paging3 实践以及源码分析...(一)(https://juejin.im/post/6844904193468137486) Jetpack 新成员 Paging3 网络实践及原理分析(二)(https://juejin.im/post...Kotlin Flow 在 ViewModel 中的使用 在 ViewModel 中使用 Flow 之前在 Jetpack 成员 Paging3 实践以及源码分析(一) 文章也有提到, 这里我们在深入分析一下...如何处理 ViewModel 的三种方式 如果不使用数据绑定,在 Activity 或者 Fragment 中如何处理 ViewModel 的三种方式。
随着Android 11的正式发布,Jetpack家族也引入了许多新的成员。我之前有承诺过,对于新引入的App Startup、Hilt、Paging 3,我会分别写一篇文章进行介绍。...另外,由于Paging 3是Google基于Kotlin协程全新重写的一个库,所以它主要是应用于Kotlin语言(Java也能用,但是会更加复杂),并且以后这样的库会越来越多,比如Jetpack Compose...如果你对于Kotlin还不太了解的话,可以去参考我的新书《第一行代码 Android 第3版》。...我们只需要按照Paging 3搭建好的框架去编写逻辑实现,告诉Paging 3如何去加载数据,其他的事情Paging 3都会帮我们自动完成。...最后,如果你需要获取Paging3Sample项目的源码,请访问以下地址: https://github.com/guolindev/Paging3Sample 另外,如果想要学习Kotlin和最新的Android
文章目录 一、Kotlin 中处理 Java 异常 1、Java 中异常操作 2、Kotlin 中调用 Java 抛出异常函数 3、分析 Kotlin 字节码信息 4、Kotlin 中捕获异常 二、...Java 中处理 Kotlin 异常 1、Kotlin 方法中抛出异常处理 2、Java 中调用 Kotlin 异常方法 3、使用 @Throws 注解注明异常 三、Kotlin 与 Java 之间的函数类型互操作...1、Java 调用 Kotlin 中的 匿名函数解决方案 2、Kotlin 中 匿名函数代码示例 3、Java 中 调用 Kotlin 匿名函数代码示例 一、Kotlin 中处理 Java 异常 -...Kotlin 异常 ---- 1、Kotlin 方法中抛出异常处理 在 Kotlin 的 函数 中 , 抛出异常 ; 如果 在 Kotlin 中 调用 抛出异常 的 Kotlin 函数 , 直接使用...使用 @Throws 注解注明异常 如果 要在 Java 中处理 Kotlin 抛出的异常 , 那么 在 Kotlin 抛出异常的函数 , 必须使用 @Throws 注解注明异常 ; 在 @Throws
前言 许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页库Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接: Android JetPack系列文章 ,持续更新中...而Paging3是Paging库当前的最新版本,仍处于测试版本,相比较于Paging2的使用就简洁多了。...Paging在架构中的使用图 通过上图我们也可以清晰的看出来,Paging在仓库层、ViewModel和UI层都有具体的表现,接下来我们通过一个示例来逐步讲解Paging是如何在项目架构中工作的。...return try { netWork.getData(pageId) } catch (e: Exception) { //在这里处理或捕获异常...除此之外,Paging3中还有一个比较重要的RemoteMediator,用来更好的加载网络数据库和本地数据库,我们后续有机会再为大家单独分享吧~ 2020年11月21日更新 paging3的设计理念是不建议对列表数据直接修改
Room 2.4 还内建了对枚举和 RxJava3 的支持,同时也全面支持 Kotlin 1.6。 我们从 Room 2.5 开始使用 Kotlin 对整个库进行重写。...Paging 3.1 为 Rx 和 Guava 集成提供了稳定支持,从而为 Paging 原生使用的 Kotlin 协程提供了 Java 版的替代方案。...此版本还通过新的返回类型 LoadResult.Invalid 表示无效或过期的数据,从而改进了对无效竞争条件的处理。...如需了解有关 Paging 3 的更多信息,请参阅 Android 开发者网站中全新简化版的教程: Paging Basics Codelab,它描述了如何在包含列表的应用中集成 Paging 库。...Room WorkManager 查看 项目主页 可获得更多内容,包括我们如何处理拉取请求,以及如何开始使用 Jetpack 构建应用。
前言 许久没有更新Jetpack系列的文章了,本篇文章为大家分享分页库Paging3的使用,如果你还没有看过我Jetpack其他的文章,可以移步至链接: Android JetPack系列文章 ,持续更新中...而Paging3是Paging库当前的最新版本,仍处于测试版本,相比较于Paging2的使用就简洁多了。...通过上图我们也可以清晰的看出来,Paging在仓库层、ViewModel和UI层都有具体的表现,接下来我们通过一个示例来逐步讲解Paging是如何在项目架构中工作的。...return try { netWork.getData(pageId) } catch (e: Exception) { //在这里处理或捕获异常...除此之外,Paging3中还有一个比较重要的RemoteMediator,用来更好的加载网络数据库和本地数据库,我们后续有机会再为大家单独分享吧~ 2020年11月21日更新 paging3的设计理念是不建议对列表数据直接修改
,下面的代码仍然抛出异常。...Toast.LENGTH_SHORT).show() throw Exception("this is an exception") } } 如果还能够对异常做一些处理...CoroutineExceptionHandler 被用来将通用的 catch 代码块用于在协程中自定义日志记录或异常处理。...// 在 Android View 中创建 autoDisposeScope,支持主线程运行、异常处理、Job 能够在 View 的生命周期内自动 Disposable val View.autoDisposeScope...总结 https://github.com/fengzhizi715/Lifecycle-Coroutines-Extension,本文是对该库的一次升级,也是对近期使用 Kotlin Coroutines
接下来我们来看Compose Multiplatform 与 KMM是如何实践的。...创建好项目之后我们来看如何处理公共的业务逻辑。 公共业务逻辑 双端完全可以共用的逻辑我们直接放在commonMain文件夹下即可。开源库的依赖我们写在commonMain目录下。...与AndroidX下的Paging设计一样,paging-common模块提供存储层、视图模型层;paging-runtim模块提供UI层。...最主要的是,paging-common中的API与AndroidX 下的API完全相同,仅仅是将包从androidx.paging迁移到了app.cash.paging中,所以这部分的使用我们直接按照AndroidX...中的Paging使用即可。
Flow 异常处理 Flow 可以使用传统的 try...catch 来捕获异常: fun main() = runBlocking { flow { emit(1)...但是 onCompletion 不能捕获异常,只能用于判断是否有异常。...println("Done") } .collect { println(it) } } 执行结果: 1 catch exception Done catch 操作符用于实现异常透明化处理...例如在 catch 操作符内,可以使用 throw 再次抛出异常、可以使用 emit() 转换为发射值、可以用于打印或者其他业务逻辑的处理等等。...: println("Completed $opName") } 该系列的相关文章: Kotlin Coroutines Flow 系列(一) Flow 基本使用 Kotlin Coroutines
但是Jetpack远不止这些组件,今天的主角—Paging,Jetpack中的分页组件,官方是这么形容它的:‘’逐步从您的数据源按需加载信息‘’ 1....3....3.基本使用 3.1 添加依赖包 implementation "androidx.paging:paging-runtime:$paging_version" // For Kotlin use paging-runtime-ktx...implementation "androidx.paging:paging-runtime-ktx:$paging_version" // For Kotlin use paging-runtime-ktx...implementation "androidx.paging:paging-rxjava2:$paging_version" // For Kotlin use paging-rxjava2-
文章目录 一、Kotlin 中的异常处理 1、捕获并处理异常 2、抛出自定义异常 一、Kotlin 中的异常处理 ---- 在 Kotlin 程序中 , 处理异常 的方式有 : 抛出默认异常 抛出自定义异常...捕获并处理异常 1、捕获并处理异常 捕获异常代码示例 : 在下面的代码中 , name 变量是可空类型变量 , 其初始值为 null , 使用 非空断言操作符 !!...调用 变量 成员 , 不会进行 空值检查 , 如果变量为空 , 则直接抛出 kotlin.KotlinNullPointerException 异常 ; 使用 try .. catch .....= null // 捕获并处理异常 try { name!!....= null // 捕获并处理异常 try { checkNull(name) name!!.
如果你想 Kotlin 一把梭,只是学习尝鲜,结合 Jetpack Compose 可以很好的作为你的技术储备。...目前,能够直接在 Compose 上使用的 Jetpack 库有:Navigation、Paging、ViewModel、LiveData、hilt 、lifecycle 理论上来讲,Android Jetpack...二 如何快速学习Compose 接下来,我将给大家介绍一份谷歌大佬强势分享《Jetpack Compose 权威指南》,手把手教大家Jetpack Compose从入门到精通。...Jetpack Compose的着重点 加速开发 强大的UI工具 直观的Kotlin API 3. API 设计 4....Jetpack Compose应用1 开始前的准备 创建DEMO 遇到的问题 2. Jetpack Compose应用2 3.
、Demo使用:Navigation、Lifecycles、Paging、LiveData、ViewModel等… \n项目使用Kotlin语言进行编写,依赖库截止代码编写时为最新版本,的几篇源码分析我们分别对...Jetpack源码解析—Navigation为什么切换Fragment会重绘? 3. Jetpack源码解析—用Lifecycles管理生命周期 4....等…项目使用Kotlin语言进行编写,依赖库截止代码编写时为最新版本。...Jetpack源码解析—看完你就知道Navigation是什么了? 2. Jetpack源码解析—Navigation为什么切换Fragment会重绘? ? 4.2 Lifecycles 3....Jetpack源码解析—ViewModel基本使用及源码解析 ? 4.5 Paging 6. Jetpack—Paging你知道怎样上拉加载吗? ?
前言 之前的文章 RxJava处理业务异常的几种方式 曾经介绍过 Retrofit 的异常可以有多种处理方式。 其中,可以使用 RxJava 的错误处理操作符,它们是专门用来处理异常的。...使用 Kotlin 的特性 这次我结合 Kotlin 扩展函数的特性来尝试处理异常。...* @author: Tony Shen * @date: 2018-07-19 17:31 * @version V1.0 */ /** * 尝试重试 * 默认有3次重试机会...,每次的延迟时间是1000ms */ fun Maybe.retryWithDelayMillis(maxRetries: Int=3, retryDelayMillis: Int=1000...它的 action 参数传递的是一个函数,专门用于处理异常。每一个网络请求的异常处理并不会都一样,可以用该函数来传递不同的异常处理。 总结 合理利用 Kotlin 的扩展函数,可以编写优雅的代码。
关键词:Kotlin 协程 异常处理 异步代码的异常处理通常都比较让人头疼,而协程则再一次展现了它的威力。 1....当然,对于可能出异常的情况,请大家尽量做好异常处理,不要将问题复杂化。...,会被当做为处理的异常抛出,就像前面的例子那样。...小结 这一篇我们讲了协程的异常处理。...,那么就将异常交给当前线程的 UncaughtExceptionHandler 处理;而 async 则在未捕获的异常出现时同样会尝试取消父协程,但不管是否能够取消成功都不会后其他后续的异常处理,直到用户主动调用
声明异常: throws,不处理异常,丢给调用者处理 public static void f() throws IOException{ ... } 丢给调用方法处理 public static...void main(String[]args) throws IOException{ f(); } main()方法丢给jre处理 自定义异常: 在运行时定义的异常用throw,如果是编译器异常则需要
Paging 3.0 Paging 库让您可以加载和显示小块的数据以改善网络和系统资源的消耗。...请查看 Paging 3.0 文档 和 Paging 3.0 codelab,以了解更多细节并上手实践。...DataStore 带来了对最佳实践的支持,如 Kotlin 协程与 Flow 和 RxJava。...您还可以 插入 自己的序列化解决方案,比如 Kotlin Serialization。...符号处理 的实验性支持,在我们对 Kotlin 代码的基准测试中,其速度比 KAPT 提高了 2 倍,还带来了对枚举和 RxJava3 的内置支持。
领取专属 10元无门槛券
手把手带您无忧上云