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

【Dev Club分享】基于RxJava一种MVP实现

本期,我们邀请了腾讯IEG Android 开发工程师——戴俊,为大家分享《基于RxJava一种MVP实现》。...MVP则通常用来将View业务层与Model层分离开来,两者结合起来可轻松实现业务解耦、线程控制、单元测试等等强大功能 内容大体框架: Android开发框架选择 如何一步步搭建MVP分层框架 使用RxJava...Q6:需求包含列表页时候,列表项也是按照mvp思想来分层,还是封装成模块比较合适 目前我们做法是直接封装成模块,简单问题不宜过度设计 Q7:想问一下腾讯动漫这个app目前用就是您讲这个架构...每次都去判断activity状态? Rx不能解决内存泄漏问题,前面2.3.7问题都提到了,通常做法是在activity层销毁时候进行解绑。...如果是前页传过来,直接显示就好,不做过度设计。 Q15:rxJava使用lamaba语法格式的话貌似会将代码缩减很多,请问嘉宾有试过这种方式?这个对项目的性能会有什么影响

94370

RxJava for Android学习笔记

Rxjava 来说可以用三个词来概括 “异步” “高效” “灵活” Android工程引入RxJava-android 请引入Rxandroid库: compile 'io.reactivex:rxandroid...线程控制 线程控制 —— Scheduler (一) 在RxJava 中,Scheduler ——调度器,相当于线程控制器,RxJava 通过它来指定每一段代码应该运行在什么样线程。...这是默认 Scheduler。 Schedulers.newThread(): 总是启用新线程,并在新线程执行操作。...Android 还有一个专用 AndroidSchedulers.mainThread(),它指定操作将在 Android线程运行。...everything is a stream(一切皆流) 然而使用RxJava操作符,我们可以避免这些烦人甚至糟糕回调,让结构和思路看起来更清晰,通过组合API,只需要约定最终结果Observable

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

Rxjava2-小白入门(二)

'io.reactivex.rxjava2:rxandroid:2.0.0-RC1' 这是我使用Rxjava2版本最新请查阅官网 RxJava: https://github.com/ReactiveX...不是讲Rxjava2?其实RxAndroid,这是一个扩展库,更好兼容了Android特性,比如主线程,UI事件等。...filter time merge retry retryWhen range Interval ... ---- Rxjava2使用场景 登陆后获取用户信息 关键词搜索 防止按钮重复点击 购物车合并本地和网络数据...Schedulers.immediate(): 直接在当前线程运行,相当于不指定线程这是默认 Scheduler。...,并且通常我们请求到结果是用来给UI控件赋值,那么Rxjava线程控制就很好帮住了我们解决这个问题,我们通过subscribeOn()这是制定Observable在那个线程执行,通过observeOn

1.1K20

一步一步实现AndroidMVP框架

内容大纲: Android 开发框架选择 如何一步步搭建分层框架 使用 RxJava 来解决主线程发出网络请求问题 结语 一、Android开发框架选择 由于原生 Android 开发应该已经是一个基础...三、使用RxJava来解决主线程发出网络请求问题 RxJava 是一个天生用来做异步工具,相比 AsyncTask, Handler 等,它优点就是简洁,无比简洁。...Shedulers.io() 是专门用来进行IO访问线程,并且线程重复利用,不需要额外线程管理。...从代码量上来讲,似比上一种方式要更多了,但实际上,当业务复杂度成倍增加时候,RxJava 可以采用这种链式编程方式随意增加调用和返回,而实现方式要比前面的方法灵活得多,简洁得多。...具体内容就不在这里讲了,大家可以看参考下面的文章(可在 google 搜索到): 给 Android 开发者 RxJava 详解 RxJava 与 Retrofit 结合最佳实践 RxJava使用场景小结

1.5K61

我去你 Kotlin 协程

网络请求这个就不用说了,RxJava 配合 Retrofit 来做网络请求,各种复杂操作和线程切换,谁用谁知道——现在用协程就可以了,比 RxJava 方便;而 event bus,当时比较火是两个开源库...那既然我都用 RxJava 了,我为啥不把 event bus 也交给它做?就这样,一种叫做 RxBus 模式就流行了起来,后来也有人开源了这样库。...为什么不用 RxJava? 很方便,很好用。但是这里就会有一个问题:变量订阅,用 RxJava 不能做?为什么要搞一个新库出来呢?RxJava 就是专门做事件订阅呀?...是因为…… LiveData 数据更新发生在主线程RxJava 也可以啊,一个操作符事( observeOn(AndroidSchedulers.MainThread)) ),安排。...——当然这是我自己观点啊。 2017 - 2021 变化 但!这只是当时情况。当时是什么时候?2017 年。

91550

Kotlin + buildSrc:更好管理Gadle依赖!

为了充分利用Android Plugin for Gradle 3.0+优点,将Android项目拆分成多个module做法越来越常见。...管理Gradle依赖三种不同方法: 手动管理 使用Google推荐“ext” Kotlin + buildSrc 1、手动管理 这是一种大多数人在采用管理依赖方法,但每次升级依赖库时都需要做大量手动更改...:2.3.0" implementation "io.reactivex.rxjava2:rxjava:2.1.9" 这里存在许多重复配置,而且当你项目有很多module时很难管理依赖库版本更新。...动手实践: 新建module名称必须为buildSrc 一开始我按照作者原文描述,在Android Studio里右键单击项目,New 出一个名为buildSrcAndroid Library,试了好几遍都提示...后来我参考这里做法,手动创建了buildSrc这个模块。步骤如下: 1、在项目根目录下新建一个名为buildSrc文件夹(与项目里app文件夹同级)。

2.4K10

给初学者RxJava2.0教程(七): Flowable

可是这是一个同步订阅呀, 上下游工作在同一个线程, 上游每发送一个事件应该会等待下游处理完了才会继续发事件啊, 不可能出现上下游流速不均衡问题呀....这是因为什么呢这是因为Flowable在设计时候采用了一种思路也就是响应式拉取方式来更好解决上下游流速不均衡问题, 与我们之前所讲控制数量和控制速度不太一样, 这种方式用通俗易懂的话来说就好比是叶问打鬼子...这是因为在Flowable里默认有一个大小为128水缸, 当上下游工作在不同线程中时, 上游就会先把事件发送到这个水缸中, 因此, 下游虽然没有调用request, 但是上游在水缸中保存着这些事件,...刚刚我们有说到水缸大小为128, 有朋友就问了, 你说128就128, 又不是唯品会周年庆, 我不信....(哈哈, 给我RxDownload打个广告: RxDownload是一个基于RxJava线程+断点续传下载工具, 感兴趣来GitHub点个star吧☺. https://github.com/

1.5K30

RxJava && Agera 从源码简要分析基本调用流程(2)

对于我们而言,最常见莫过于在非主线程获取并处理数据之后在主线程更新UI这样场景了: [image.jpg] 这是我们十分常见调用方法,一气呵成就把不同线程之间处理都搞定了,因为是链式所以结构也很清晰...Agera作为专门为Android打造Reactive Programming框架,难免会被拿来与RxJava做对比。...与RxJava比起来,Agera更加专注于Android生命周期,而RxJava则更加纯粹地面向Java平台而非Android。 也许你可能会问:“那么RxAndroid呢,不是还有它?”...相较于RxJava中通过Subscription去取消订阅做法,Agera这种写法显然更为清晰也更为整洁。...参考&拓展: RxJava Wiki Agera Wiki 给 Android 开发者 RxJava 详解 Google Agera vs.

10.4K10

AndroidRxJava使用(四)线程控制 —— Scheduler

所以,这篇为大家介绍RxJava重要概念——Scheduler 参考:给 Android 开发者 RxJava 详解 (本文部分内容引用自该博客) 介绍 RxJava在不指定线程情况下,...所以之前做法 Observable.just(student1, student2, student2) //使用map进行转换,参数1:转换前类型,...这是默认 Scheduler。 Schedulers.newThread():总是启用新线程,并在新线程执行操作。...AndroidSchedulers.mainThread():它指定操作将在 Android线程运行。...RxJava使用十分灵活,想要对其熟悉使用只有一个办法,那就是多用啦,熟能生巧。 以上有错误之处感谢指出 参考:给 Android 开发者 RxJava 详解 (本文部分内容引用自该博客)

652120

RxJava 详解

RxJava 已经内置了几个Scheduler,它们已经适合大多数使用场景: Schedulers.immediate(): 直接在当前线程运行,相当于不指定线程这是默认Scheduler。...而且subscribe()不是最外层直接调用方法,它竟然也能被指定线程?)。然而 Scheduler 原理需要放在后面讲,因为它原理是以下一节《变换》原理作为基础。...flatMap(): 这是一个很有用但非常难理解变换,因此我决定花多些篇幅来介绍它。 首先假设这么一种需求:假设有一个数据结构『学生』,现在需要打印出一组学生名字。实现方式很简单: ? 很简单。...) // 设置防抖间隔为 500ms .subscribe(subscriber);妈妈再也不怕我用户手抖点开两个重复界面啦。...比如: 假设这么一种情况:你程序取到User并不应该直接显示,而是需要先与数据库中数据进行比对和修正后再显示。使用Callback方式大概可以这么写: ? 有问题? 很简便,但不要这样做。

1.7K10

AndroidRxJava + Retrofit完成网络请求

在这片文章之前分别单独介绍过Rxjava以及Retrofit使用: Android Retrofit 2.0 使用 Android RxJava使用(一)基本用法 (以及后面的几篇,就不一一列出了...Call call, Throwable t) { //请求失败操作 } }); 以上是Retrofit单独使用时做法...可以看到,调用了servicelogin方法后得到Observable对象,在新线程中执行网络请求,请求成功后切换到io线程执行保存用户信息动作,最后再切换到主线程执行请求失败onError()、...一般登录后会得到token,然后根据token去获取用户信息。他们步骤是这样: 1、登录 2、获取用户信息(前提:登录成功) 可以看得出来,这是一个嵌套结构...嵌套啊!!!...RxJava使用就暂时介绍到这里吧,使用过程中遇到好用再出来跟大家分享。 以上有错误之处感谢指出 参考:给 Android 开发者 RxJava 详解 (本文部分内容引用自该博客)

1K100

给创业码农的话--如何提升开发效率

App架构 RxJava 首先给大家安利ReactiveX,其中Android核心实现为RxJava。...但是Android本身AsyncTask设计个人觉得设计十分糟糕,不但写出来代码冗长,而且稍微复杂一些多流操作就会写完全无法维护(这里可以用Java本身线程模式来实现)。...而且肆意线程也会造成App的卡顿。这里本身最初想法就是需要一个线程池,以Promise方式对外提供接口。...这里微信也有类似方案,通过将所有的线程和Handler使用接口收敛,以监控和控制无节操线程、卡顿为主要目标。而Rx方案以帮助我们用少量code,清晰实现复杂时序逻辑为主。...(https://github.com/futurice/android-best-practices) RxJava (https://github.com/ReactiveX/RxJava) RxJava

1.9K70

Carson带你学AndroidRxJava操作符教程

前言 Rxjava,由于其基于事件流链式调用、逻辑简洁 & 使用简单特点,深受各大 Android开发者欢迎。...Carson带你学RxJava系列文章,包括 原理、操作符、应用场景、背压等等,请看文章:Android这是一份全面 & 详细RxJava学习指南 本文所有代码 Demo均存放在Carson_Ho...RxJava 实际应用讲解:联合判断 3.4 功能性操作符 作用 辅助被观察者(Observable) 在发送事件时实现一些功能性需求 实际应用场景 连接(订阅) 观察者 & 被观察者 线程调度...(切换) 错误处理 事件生命周期操作 延时操作 重复发送操作 类型 根据上述应用场景,常见功能性操作符 主要有: 具体操作符 & 应用场景 详细介绍 Android RxJava:功能性操作符...全面讲解 实际开发需求案例 下面,我将讲解组合操作符常见实际需求案例 该例子将结合Retrofit 和 RxJava 进行讲解 Android RxJava:细说 线程控制(切换 /

64120

一篇文章就能了解Rxjava

前言: 第一次接触RxJava是在前不久,一个新Android项目的启动,在评估时选择了RxJavaRxJava是一个基于事件订阅异步执行一个类库。...为是什么一个Android项目启动会联系到RxJava呢?因为在RxJava使用起来得到广泛认可,又是基于Java语言。自然会有善于组织和总结开发者联想到Android!...没错,RxAndroid就这样在RxJava基础上,针对Android开发一个库。...而且 subscribe() 不是最外层直接调用方法,它竟然也能被指定线程?)。然而 Scheduler 原理需要放在后面讲,因为它原理是以下一节《变换》原理作为基础。...flatMap(): 这是一个很有用但非常难理解变换,因此我决定花多些篇幅来介绍它。 首先假设这么一种需求:假设有一个数据结构『学生』,现在需要打印出一组学生名字。

1.4K31

Android RxJava 实战讲解:优雅实现 网络请求轮询

前言 Rxjava,由于其基于事件流链式调用、逻辑简洁 & 使用简单特点,深受各大 Android开发者欢迎。 ?...如果还不了解RxJava,请看文章:Android这是一篇 清晰 & 易懂Rxjava 入门教程 RxJava如此受欢迎原因,在于其提供了丰富 & 功能强大操作符,几乎能完成所有的功能需求...注:关于 Rxjava延时创建操作符interval() 和 intervalRange()使用请看文章Android RxJava:最基础操作符详解 - 创建操作符 ---- 2....RxJava 轮询需求,关于Retrofit使用请看文章:这是一份很详细 Retrofit 2.0 使用教程(含实例讲解) 3.2 步骤实现 步骤1: 添加依赖 a....总结 本文主要讲解了 Rxjava创建操作符实际开发需求场景:轮询需求 ,并结合Retrofit 与RxJava 实现 接下来时间,我将持续推出 AndroidRxjava 2.0 一系列文章

2.3K40

彻底搞清楚 RxJava 是什么东西

rxjava原理简析 我想大家听说过如下Java都知道如下Java采用一种扩展观察者模式实现,何为观察者模式:观察者模式是一种一对多依赖关系,当一个对象改变状态时,它会通知所有依赖者接受通知...注意:如果你用android studio作为ide工具的话,请务必添加rxjava依赖 ?...这是默认 Scheduler。 Schedulers.newThread(): 总是启用新线程,并在新线程执行操作。...另外, Android 还有一个专用 AndroidSchedulers.mainThread(),它指定操作将在 Android线程运行。...flatMap(): 这是一个很有用但非常难理解变换 首先假设这么一种需求:假设有一个数据结构『学生』,现在需要打印出一组学生属性(我选择属性,是因为如果对象可以打印,你们单个属性肯定不是问题

19.3K115

Android RxJava应用:优雅实现网络请求轮询(无条件)

前言 Rxjava,由于其基于事件流链式调用、逻辑简洁 & 使用简单特点,深受各大 Android开发者欢迎。...Carson带你学RxJava系列文章,包括 原理、操作符、应用场景、背压等等,请看文章:Android这是一份全面 & 详细RxJava学习指南 目录 1....需求场景 注:关于 Rxjava延时创建操作符interval() 和 intervalRange()使用请看文章Android RxJava:最基础操作符详解 - 创建操作符 2....RxJava 轮询需求,关于Retrofit使用请看文章:这是一份很详细 Retrofit 2.0 使用教程(含实例讲解) 3.2 步骤实现 步骤1: 添加依赖 a....在 Gradle加入Retrofit库依赖 build.gradle dependencies { // Android 支持 Rxjava // 此处一定要注意使用RxJava2版本 compile

89220
领券