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

Google 推荐在 MVVM 架构中使用 Kotlin Flow

在 Google 发布的 Jetpack 的最新成员 Paging3,在其内部的源码实现也是使用的 Flow,关于 Paging3 的使用可以参考以下链接: Jetpack 成员 Paging3 实践以及源码分析...接下来我们一起来探究一下 Kotlin Flow 在 MVVM 当中每层是如何实现的。...按照如上配置,在数据源的工作就完成了,相比于 RxJava 的 Observable 、 Flowable 、 Single 、 Completable 、 Maybe 使用场景要简单太多了,我们来看一下在...,使用 LiveData 协程构造方法 (coroutine builder),这个方法也是在 PokemonGo 项目中用到的方法。...结语 致力于分享一系列 Android 系统源码、逆向分析、算法、翻译、Jetpack 源码相关的文章,正在努力写出更好的文章,如果这篇文章对你有帮助给个 star,文章中有什么没有写明白的地方,或者有什么更好的建议欢迎留言

4.4K21

响应式编程|Kotlin与LiveData扩展函数实践技巧

其实就算是长期接触Java的Android开发者,应该也接触过Rx系列组件,例如RxJava, RxSwift, RxKotlin等等,这些都是典型的基于响应式编程设计的组件。...数据源Data经过一系列的变化,直接达到最终在View层展示的状态。例如从远程获取数据的fetch方法可以理解为改变数据源的一个“水坝”。...3.1 常规,但是不优雅的例子 在JAVA中我们想要订阅一个数据源,构建一个最简单的关系:“输出 = 输入”,在最基本的情况下,可以这么做: ?...3.2 RxJava能简化工作,但我们还想做的更好 上面的例子展示了一个最基础的语言层面上,构建一个响应式关系的例子。...3.3 最简单的方案 有没有更好的方法呢?

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

    五分钟带你感受RxJava的优雅

    不知道你有没有发现,在很多互联网公司中,RxJava在开发中占的比例越来越大。 特别是在一些发展速度快,产品迭代更新快的公司中,RxJava经常在面试中出现。...接入RxJava 在Android中引入RxJava需要添加两个依赖,RxJava和RxAndroid implementation 'io.reactivex:rxjava:1.3.8' implementation...代码对比--不使用RxJava 我们写了个demo,用来请求某地区的天气情况,然后更新到UI。 demo中用OkHttp来做网络请求,请求返回的json结果封装成 WeatherBean 类。...挺简单的一段代码,但我们还是觉得太繁琐。 现在我们要用RxJava+Retrofit来修改getWeatherJava()这个方法。...RxJava,我觉得有几个原因 · 线程切换 · 链式调用 · 兼容性好 RxJava还有一些更好的特性,这里篇幅所限,我们接下来再陆续举例说明。

    66130

    零基础理解RxJava和响应式编程

    这是一篇能帮助你在10分钟内从零到一理解RxJava和响应式编程的文章。 RxJava发展到现在已经在2016年推出了第二代。可能你听说过很多人讲起RxJava,但是很少在实际项目开发中用到它。...这些网络请求,UI互动,数据库,磁盘IO,都可以看成异步源,而Android本身是也是一个大异步源,像Push通知,屏幕旋转,锁屏开屏这些操作都会触发异步行为。...RxJava作为例子,在RxJava2的时候相关的接口改了一些,虽然名字变了,不过思路还是一样。...中,异步源作为被观察者被 Observable包括起来,它的逻辑要写到 call 方法里,当 subscribe被调用的时候会触发 call。...这里在call方法的参数里出现了一个新的对象 subscriber,这其实就是 Observer,Observer是个接口,subscriber是实现了这个接口的类。

    78020

    Android RxJava应用:合并数据源

    ,实现较为复杂的合并2个网络请求向2个服务器获取数据 & 统一展示 3.1 采用 Merge()操作符 具体实现 关于操作符Merge() 的使用请看文章:Android RxJava:组合 / 合并操作符...地址 = RxJava2实战系列:合并数据源 3.2 采用Zip()操作符 关于操作符Zip() 的使用请看文章:Android RxJava:组合 / 合并操作符 详细教程 功能说明 在该例中,...我将结合结合 Retrofit 与RxJava,实现: 从不同数据源(2个服务器)获取数据,即 合并网络请求的发送 统一显示结果 实现方案 采用Get方法 对 金山词霸API 发送2个网络请求(...在 Gradle加入Retrofit库的依赖 build.gradle dependencies { // Android 支持 Rxjava // 此处一定要注意使用RxJava2的版本 compile...总结 本文主要讲解了 Rxjava的实际开发需求场景:合并数据源需求 ,并结合Retrofit 与RxJava 实现

    77820

    Android RxJava 实战讲解:合并数据源 & 同时展示数据

    今天,我将为大家带来 Rxjava创建操作符的常见开发应用场景:合并数据源需求 ,并结合Retrofit 与RxJava 实现,希望大家会喜欢。...与RxJava,实现较为复杂的合并2个网络请求向2个服务器获取数据 & 统一展示 3.1 采用 Merge()操作符 具体实现 关于操作符Merge() 的使用请看文章:Android RxJava...地址 = RxJava2实战系列:合并数据源 3.2 采用Zip()操作符 关于操作符Zip() 的使用请看文章:Android RxJava:组合 / 合并操作符 详细教程 功能说明 在该例中...,我将结合结合 Retrofit 与RxJava,实现: 从不同数据源(2个服务器)获取数据,即 合并网络请求的发送 统一显示结果 实现方案 采用Get方法 对 金山词霸API 发送2个网络请求...在 Gradle加入Retrofit库的依赖 build.gradle dependencies { // Android 支持 Rxjava // 此处一定要注意使用RxJava2的版本 compile

    3.6K30

    RxJava 2.0还没熟悉,RxJava 3.0说来就来了!(基础篇)

    前言 每个Android开发者,都是爱RxJava的,简洁线程切换和多网络请求合并,再配合Retrofit,简直是APP开发的福音。不知不觉,RxJava一路走来,已经更新到第三大版本了。...主要变化 主要特点 单一依赖:Reactive-Streams 继续支持Java 6+和Android 2.3+ 修复了API错误和RxJava 2的许多限制 旨在替代RxJava 2,具有相对较少的二进制不兼容更改...也就是说,Rxjava包括一个源的数据流,数据流后跟着消费者的零个到多个消费数据流步骤。...2.4 线程调度器(Schedulers) 对于我们Android开发来说,最喜欢的就是它简洁切换线程的操作。RxJava通过调度器来方便线程的切换。...Schedulers.single():适合需要单一线程的操作 Schedulers.trampoline(): 适合需要顺序运行的操作 在不同平台还有不同的调度器,例如Android的主线程:AndroidSchedulers.mainThread

    6.1K20

    Carson带你学Android:什么时候应该使用Rxjava?(开发场景汇总)

    基本使用 Rxjava的使用方式有两种: 方式1:分步骤实现 方式2:基于事件流的链式调用 具体使用 请看文章Android RxJava:面向初学者的RxJava使用指南 3...., 待注册成功后回再继续发送 用户登录 的网络请求 冲突 嵌套实现网络请求较为复杂,即嵌套调用函数 下面展示的是结合 Retrofit 与 RxJava的基本用法,即未用操作符前 // 发送注册网络请求的函数方法...对于从磁盘 / 内存缓存中 获取缓存数据 的功能逻辑如下: 具体实现 Android RxJava 实际应用讲解:从磁盘 / 内存缓存中 获取缓存数据 3.6 合并数据源 需求场景...功能说明 即,同时向2个数据源获取数据 -> 合并数据 -> 统一展示到客户端 具体实现 Android RxJava 实际应用讲解:合并数据源 3.7 联合判断 需求场景 需要同时对多个事件进行联合判断...解决方案 采用 背压策略 具体实现 Android :全面解析RxJava 背压策略 至此,关于RxJava常见的实际开发应用场景讲解完毕。 4.

    96920

    MVVM的数据持久化(二)——ROOM的使用

    修改Model层 这里我们需要修改一下Model层,添加Repository作为ViewModel层的数据源,在Repository里我们进行数据的处理判断 package yang.cehome.com.mvvmdemo.model.repository...项目结构 修改我们的ViewModel层的数据源 以前我们都是以PostService作为数据源,现在我们要以PostRepo作为数据源,这里我们只需要修改 package yang.cehome.com.mvvmdemo.viewmodel...: "error") }) } } 在View层当中引用 package yang.cehome.com.mvvmdemo.view import android.databinding.DataBindingUtil...但是就目前的方法来说,每次都需要写的模板化的代码太多了,那么我们有没有什么办法简化呢,答案必然是有的。 后面的文章我们会持续介绍到,希望大家持续关注。...,不知道有没有什么好的建议,我们一起讨论一下。

    75550

    不要慌,这些Android BAT高级面试题刷一刷

    so 的加载流程是怎样的,生命周期是怎样的? 请介绍一下NDK? image.png 三、Android优秀三方库源码 你项目中用到哪些开源库?说说其实现原理?...Android:主流网络请求开源库的对比(Android-Async-Http、Volley、OkHttp、Retrofit) 响应式编程框架:RxJava实现原理 RxJava 变换操作符 map flatMap...方法核心逻辑 LinkedHashMap原理 DisLruCache原理 Bitmap 压缩策略 Bitmap的处理 实现一个ImageLoader的流程 Bitmap在decode的时候申请的内存如何复用...脚本,插件等等;比如:多人协同开发可能对一些相同资源都各自放了一份,有没有方法自动检测这种重复之类的。 如何绕过9.0限制? 对文件描述符怎么理解? 如何实现进程安全写文件?...最后,预祝各位小伙伴都能实现自己的目标,在每一个阶段都能成就更好的自己。

    1K00

    大佬们,一波RxJava 3.0来袭,请做好准备~

    1 前言 每个Android开发者,都是爱RxJava的,简洁线程切换和多网络请求合并,再配合Retrofit,简直是APP开发的福音。不知不觉,RxJava一路走来,已经更新到第三大版本了。...2 主要变化 2.1 主要特点 单一依赖:Reactive-Streams 继续支持Java 6+和Android 2.3+ 修复了API错误和RxJava 2的许多限制 旨在替代RxJava...Schedulers.single():适合需要单一线程的操作 Schedulers.trampoline(): 适合需要顺序运行的操作 在不同平台还有不同的调度器,例如Android的主线程:AndroidSchedulers.mainThread...在Android开发,通常为了防止用户重复点击而设置标记位,而通过RxJava的debounce操作符可以有效达到该效果。...: Hello 11RxJava: world 12RxJava: Git 13RxJava: Code 14RxJava: 8 merge在合并数据源时,如果一个合并发生异常后会立即调用观察者的onError

    1.9K10

    Android RxJava实际应用案例讲解:使用RxJava的最佳开发场景

    如果还不了解RxJava,请看文章:Android:这是一篇 清晰 & 易懂的Rxjava 入门教程 今天,我将为大家带来 Rxjava的的基本使用 & 实际应用案例教学,即常见开发应用场景实现 ,...基本使用 Rxjava的使用方式有两种: 方式1:分步骤实现 方式2:基于事件流的链式调用 具体使用 请看文章Android RxJava:面向初学者的RxJava使用指南 3....对于从磁盘 / 内存缓存中 获取缓存数据 的功能逻辑如下: 具体实现 Android RxJava 实际应用讲解:从磁盘 / 内存缓存中 获取缓存数据 3.6 合并数据源 需求场景 功能说明...即,同时向2个数据源获取数据 -> 合并数据 -> 统一展示到客户端 具体实现 Android RxJava 实际应用讲解:合并数据源 3.7 联合判断 需求场景 需要同时对多个事件进行联合判断...解决方案 采用 背压策略 具体实现 Android :全面解析RxJava 背压策略 至此,关于RxJava常见的实际开发应用场景讲解完毕。 4.

    1.4K50

    备战金九银十:当你裸辞遇到了面试难,你需要了解一下这些面试题

    又要到金九银十的跳槽季了,为了让更多的小伙伴可以在面试的时候取的更好的offer,不定期都会分享BAT常问面试题,下面这些面试内容你都会了,30K不在话下,由于高级篇内容较多,预计阅读需要....3个月...WMS是如何管理Window的? 大体说清一个应用程序安装到手机上时发生了什么? ...... 三、Android优秀三方库源码 你项目中用到哪些开源库?说说其实现原理?...网络底层框架:OkHttp实现原理 网络封装框架:Retrofit实现原理 响应式编程框架:RxJava实现原理 图片加载框架:Glide实现原理 事件总线框架:EventBus实现原理 内存泄漏检测框架...android文件存储,各版本存储位置的权限控制的演进,外部存 储,内部存储 有什么提高编译速度的方法? Scroller原理。 Hybrid系列。...工作中有没有用过或者写过什么工具?脚本,插件等等;比如: 多人协同开发可能对一些相同资源都各自放了一份,有没有方法自动 检测这种重复之类的 如何绕过9.0限制? .......

    71820

    无处安放的业务逻辑使你在Android架构上吃了多少生硬的亏,是否还在生搬硬套?

    1.基本概念以及底层思想 所有的模块化都是为了满足单一设计原则 (字面意思理解即可),一个函数或者一个类再或者一个模块,职责越单一复用性就越强,同时能够间接降低耦合性 在软件工程的背景下,改动就会有出错的可能...当前Android生态能实现数据绑定UI的框架只有两个:DataBinding、Compose(暂不讨论) 在引入DataBinding之前渲染一条数据通常需要两步,如下: var title = "iOS...所以我建议在Kotlin中 碰到数据处理尽量使用链式高阶函数(RxJava、Kotlin Flow亦然)。...绘制项目架构图 项目开发流程 你在项目中的角色 你负责项目中的哪些模块 讲讲你负责模块的具体实现 项目中都用到了哪些第三发框架 有没有自己写过框架 业余时间你是如何提高自己(学习)的 有没有自己的技术...对于Android开发的朋友来说应该是最全面最完整的面试资料,为了更好地整理每个模块,我参考了很多网上的优质博文和项目,力求不漏掉每一个知识点。

    1.8K01

    Android面试心得必备技能储备详解,已拿到offer

    2.如何获取当前线程的Looper?是怎么实现的?(理解ThreadLocal) 3.是不是任何线程都可以实例化Handler?有没有什么约束条件?...一般双重校验锁中用到volatile,需要分析volatile的原理 2.观察者模式:要求会手写,有些面试官会问你在项目中用到了吗?...Fresco怎么实现圆角?Fresco怎么配置缓存? 四、消息推送Push 1.项目中消息推送是自己做的还是用了第三方?如极光。还有没有用过其他的?这几家有什么优势区别,基于什么原因选择它的?...六、热更新、热修复、插件化(这一块要求高点,一般高级工程师是需要理解的) 了解classLoader 七、新技术 RxJava、RxBus、RxAndroid,这个在面试想去的公司时,可以反编译下他们的包...现在开发过多依赖ide,所以会有个弊端,当我们在面试讲解很容易不知道某个方法怎么读,这是一个硬伤......所以一定要对常见的关键性的类名、方法名、关键字读准,有些面试官不耐烦会说“你到底说的是哪个?”

    1.1K30

    Carson带你学Android:RxJava、Retrofit联合使用汇总(含实例教程)

    基础使用 下面,我将采用最基础的 Retrofit + RxJava 实现 网络请求 的功能 4.1 功能说明 实现功能:将中文翻译成英文 - > 显示到界面 实现方案:采用Get方法对 金山词霸API...在 Gradle加入Retrofit库的依赖 build.gradle dependencies { // Android 支持 Rxjava // 此处一定要注意使用RxJava2的版本 compile...中的变换操作符FlatMap()实现嵌套网络请求 具体实现 具体请看文章: Android RxJava 实际应用讲解:网络请求嵌套回调 5.4 网络请求出错重连 需求场景 功能需求说明...功能逻辑 具体实现 具体请看文章:Android RxJava 实际应用讲解:网络请求出错重连(结合Retrofit) 5.5 合并数据源 & 统一显示 需求场景 功能说明 即,同时向...2个服务器发送网络请求 ->> 获取数据 ->> 合并数据 ->> 统一展示到客户端 具体实现 具体请看文章:Android RxJava 实际应用讲解:合并数据源 至此,关于Retrofit

    1.4K21
    领券