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

Rxjava2-小白入门(二)

不是讲Rxjava2吗?其实RxAndroid,这是一个扩展库,更好的兼容了Android特性,比如主线程,UI事件等。...: onNext: 吃饭 10-08 16:35:16.158 14943-14943/com.example.ggxiaozhi.rxjava D/MainActivity: onNext: 睡觉 当符合条件后调用...发送数据前我们先请求网络(一般我们请求网络都会返回一个Json字符串或是实体类)然后将等到的消息发给Consumer()(Observer),我们都知道Android中是不允许在主线程请求网络操作的,并且通常我们请求的到结果是用来给...相信大家也能明白,如果不制定线程所有操作都是在主线程中运行的。...它和 Subscriber.onStart() 同样是在 subscribe() 调用后而且在事件发送前执行,但区别在于它可以指定线程 ---- 案例 在了解了Rxjava2的原理,创建和使用下面我就该学习他的操作符了

1.1K20

RxJava的一些入门学习分享

同时RxJava采用了函数式编程的风格,在序列的变换方法和响应事件的方法,都大量使用了Java的函数式接口,并把变换中的要处理的线程同步,IO阻塞,异常处理等逻辑都封装进操作符方法里,不同的变换方法可以链式连续调用...Scheduler是RxJava用于线程调度的工具类,它提供了几个线程种类,分别用于不同的业务情景,如下表: 种类 效果 Schedulers.computation( ) 用于计算任务,如事件循环或和回调处理...( ) 当其它排队的任务完成后,在当前线程排队开始执行 下图是GitHub上的android开发应用了RxJava的一个demo:RxJava-Android-Samples的其中一个应用情景。...这是一个针对Android API的RxJava拓展,例如上述代码中的AndroidSchedulers.mainThread(),就是这个库里的返回Android的UI主线程的Scheduler的方法...上述代码中,按钮点击是调用了startLongOperation方法。这个方法通过创建一个只发送一个boolean数据的Observable,并且在发送前让当前线程沉睡3秒,藉此模拟耗时处理。

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

    RxJava再回首

    简单的解释,RxJava就是一个基于观察者模式的异步框架。 在Android中实现异步操作并不复杂。...6、线程调度 这是RxJava的一个强大的地方,在不指定线程的情况下, RxJava 遵循的是线程不变的原则,即:在哪个线程调用 subscribe(),就在哪个线程生产事件;在哪个线程生产事件,就在哪个线程消费事件....subscribe(subscriber); // Android 主线程,由 observeOn() 指定 如上,通过 observeOn() 的多次调用,程序实现了线程的多次切换。...然而 onStart() 由于在 subscribe() 发生时就被调用了,因此不能指定线程,而是只能执行在 subscribe() 被调用时的线程。...它和 Subscriber.onStart() 同样是在 subscribe() 调用后而且在事件发送前执行,但区别在于它可以指定线程。

    82910

    Android响应式编程(一)RxJava前篇

    2.RxJava基本用法 在使用RxJava前请现在Android Studio 配置gradle: ?...上述的代码会依次调用onNext(“杨影枫”)、onNext(“月眉儿”)、onCompleted()。 Subscribe (订阅) 订阅比较简单: ? 或者也可以调用 ?...4.Scheduler 内置的Scheduler 方才我们所做的都是运行在主线程的,如果我们不指定线程,默认是在调用subscribe方法的线程上进行回调的,如果我们想切换线程就需要使用Scheduler...我们仍旧是用log打印出onNext事件所传递过来的字符串,只不过这一次事件的产生的线程是在io线程上,事件回调的线程则是在主线程。...我们将根据Okhttp的回调(不在主线程)来定义事件的规则,调用subscriber.onNext来将请求返回的数据添加到事件队列中。接下来我们来实现观察者: ?

    1.4K50

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

    1 前言 每个Android开发者,都是爱RxJava的,简洁线程切换和多网络请求合并,再配合Retrofit,简直是APP开发的福音。不知不觉,RxJava一路走来,已经更新到第三大版本了。...线程调度器(Schedulers) 对于我们Android开发来说,最喜欢的就是它简洁切换线程的操作。RxJava通过调度器来方便线程的切换。...Schedulers.single():适合需要单一线程的操作 Schedulers.trampoline(): 适合需要顺序运行的操作 在不同平台还有不同的调度器,例如Android的主线程:AndroidSchedulers.mainThread...subscribeOn 指定被观察者的线程,即数据源发生的线程。例如在Android访问网络时,需要将线程切换到子线程。多次指定只有第一次有效。...在Android开发,通常为了防止用户重复点击而设置标记位,而通过RxJava的debounce操作符可以有效达到该效果。

    1.9K10

    RxJava(三) flatMap 操作符用法详解

    七、RxJava 使用 debounce 操作符优化 app 搜索功能 八、RxJava concat 操作处理多数据源 九、RxJava zip 操作符在 Android 中的实际使用场景...十、RxJava switchIfEmpty 操作符实现 Android 检查本地缓存逻辑判断 十一、RxJava defer 操作符实现代码支持链式调用 十二、combineLatest 操作符的高级使用...十三、RxJava 导致 Fragment Activity 内存泄漏问题 十四、interval、takeWhile 操作符实现获取验证码功能 十五、RxJava 线程的自由切换 ----...,而是三个不同的线程 RxCachedThreadScheduler-8 、RxCachedThreadScheduler-7、RxCachedThreadScheduler-6 。...另外,我为 Android 程序员编写了一份:超详细的 Android 程序员所需要的技术栈思维导图。

    1.8K20

    初识RxJava 2 for Android

    为了帮助决定是否值得初步投资学习 RxJava ,接下来我们来探索一些在Android项目中引入 RxJava 库的主要优点。 2.1 更简洁,更易读的代码 复杂、冗长和难以阅读的代码总是令人烦躁。...2.2 多线程简单易用 现在Android应用需要支持多任务。至少在App在后台执行某些工作(如管理网络链接、下载文件或播放音乐)时,用户能够继续与UI交互。...那么问题来了,Android默认情况下是单线程的,所以如果App需要执行多任务就需要创建一些额外的线程。...例如,我们可以创建一个新线程并指定任务在这个新线程上执行: observable.subscribeOn(Schedulers.newThread()) Android上多线程另一个长期以来的问题是,只能在主线程更新...再者,RxJava 有一个更直接的解决方案。可以使用 observeOn 操作符来指定 Observable 通过包括主线程在内的不同 Scheduler 发送通知。

    1.1K60

    Android RxJavaRxAndroid结合Retrofit使用

    概述 RxJava是一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。更重要的是:使用RxJava在代码逻辑上会非常简洁明了,尤其是在复杂的逻辑上。告别迷之缩进。...RxAndroid是RxJava针对Android平台的拓展。...RxJava 不仅把每个事件单独处理,还会把它们看做一个队列。没有新的onNext()之后,调用此方法。 onError():事件队列异常。...以后可以多次调用,但被观察者Observable所在线程已经指定 doOnSubscribe()在发送事件前执行,可以指定执行线程。...所以这里我们定义了一个sb(StringBuilder),用于将每次返回的Future拼接起来,最后在onCompleted() 中调用tv.setText(sb); 结束语 至此,RxJava/RxAndroid

    1.3K100

    彻底搞清楚 RxJava 是什么东西

    注意:重点来了  与传统观察者模式不同, RxJava 的事件回调方法除了普通事件 onNext() (相当于 onClick() / onEvent())之外,还定义了两个特殊的事件:onCompleted...在响应的队列中只能调用一个。 rxjava事件处理的模型图: ?....subscribe(s -> System.out.println(s)); 然而如果你认为rxjava只有这个用处,那么也什么牛逼的,在 RxJava 的默认规则中,事件的发出和消费都是在同一个线程的...Scheduler (线程调度器) 线程控制与调度  RxJava 遵循的是线程不变的原则,即:在哪个线程调用 subscribe(),就在哪个线程生产事件;在哪个线程生产事件,就在哪个线程消费事件。...另外, Android 还有一个专用的 AndroidSchedulers.mainThread(),它指定的操作将在 Android 主线程运行。

    20.2K115

    RxJava 详解

    (三) 线程控制 —— Scheduler (一) 在不指定线程的情况下, RxJava 遵循的是线程不变的原则,即:在哪个线程调用subscribe(),就在哪个线程生产事件;在哪个线程生产事件,就在哪个线程消费事件...如上,通过observeOn()的多次调用,程序实现了线程的多次切换。 不过,不同于observeOn(),subscribeOn()的位置放在哪里都可以,但它是只能调用一次的。...然而onStart()由于在subscribe()发生时就被调用了,因此不能指定线程,而是只能执行在subscribe()被调用时的线程。...它和Subscriber.onStart()同样是在subscribe()调用后而且在事件发送前执行,但区别在于它可以指定线程。...当 RxJava 形式的时候,Retrofit 把请求封装进Observable,在请求结束后调用onNext()或在请求失败后调用onError()。

    1.8K10

    RxJava从入门到不离不弃(一)——基本概念和使用

    前言 RxJava的编程思想已经在Android开发者中变得越来越流行。有个不好的点就是上手不太容易,尤其是大部分人之前都是使用命令式编程语言。...首先要先理清这么一个问题:Rxjava和我们平时写的程序有什么不同。如果对Rxjava有过了解的朋友都会感受到用这种方式写的程序和我们一般写的程序有很明显的不同。...RxJava 的优势也是简洁,但它的简洁的与众不同之处在于,随着程序逻辑变得越来越复杂,它依然能够保持简洁。 随着对RxJava的深入了解,会更加深刻体会到RxJava的简洁带来的好处。...,在子线程中进行下载,然后进行解压,在返回主线程进行UI操作,嵌套层级和逻辑杂乱可想而知。...需要注意的是,如果对准备工作的线程有要求(例如弹出一个显示进度的对话框,这必须在主线程执行),onStart() 就不适用了,因为它总是在 subscribe 所发生的线程被调用,而不能指定线程。

    77120

    【Android】RxJava的使用(一)基本用法

    切莫着急,随着慢慢深入就能体会到RxJava带来的方便了) 参考:给 Android 开发者的 RxJava 详解 (本文部分内容引用自该博客) 介绍 在GitHub主页上的介绍: a library...需要注意的是,如果对准备工作的线程有要求(例如弹出一个显示进度的对话框,这必须在主线程执行),onStart()就不适用了,因为它总是在 subscribe 所发生的线程被调用,而不能指定线程。...所以最好保持一个原则:要在不再使用的时候尽快在合适的地方(例如onPause()onStop()等方法中)调用unsubscribe()来解除引用关系,以避免内存泄露的发生。...后面的几篇我会介绍RxJava的其他功能,还有一些复杂的嵌套关系的处理,到时候知道RxJava的强大之处了) 更多: Android RxJava的使用(二)Action Android RxJava...的使用(三)转换(map、flatMap) Android RxJava的使用(四)线程控制 —— Scheduler 以上有错误之处感谢指出

    1.2K70

    RxJava之初体验

    例如Android开发中,我们就经常会遇到界面交互与后台网络操作相互混杂的情况,在一个界面中,随着功能的添加与迭代,这些交互与网络操作会不断叠加,这会使得代码混乱,让人无法控制,而RxJava提供了一种对复杂流程的管理方法...来看一个最简单的例子,通过RxJava实现一个简单的网络图片和文字(JSON数据)加载功能。 2 实现流程 1. Android UI线程不能有网络操作,需要创建一个子线程执行网络操作; 2....网络图片加载,在UI线程显示图片和文字信息。...通过RxJava的线程管理我们可以细粒度的控制操作流程中每个状态的线程跳转(比如在一个操作流程中,我们可以在IO线程读取数据,CPU密集计算线程做数据处理,然后在UI线程显示结果,而这些我们通过添加几行简单的代码就可以实现...RxJava提供了基于Observable序列实现的异步调用,我们可以在Observable的创建时可以添加多个事件,序列化执行,同时,在操作流程中,可以使用map、flatMap将操作对象做1:1、1

    41130

    Android RxJava操作符详解 系列:组合 合并操作符

    前言 Rxjava,由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎。 ?...如果还不了解 RxJava,请看文章:Android:这是一篇 清晰 & 易懂的Rxjava 入门教程 RxJava如此受欢迎的原因,在于其提供了丰富 & 功能强大的操作符,几乎能完成所有的功能需求...应用场景 & 对应操作符 介绍 注:在使用RxJava 2操作符前,记得在项目的Gradle中添加依赖: dependencies { compile 'io.reactivex.rxjava2...emitter.onComplete(); } }).subscribeOn(Schedulers.io()); // 设置被观察者1在工作线程1中工作 <--...4.2 合并数据源 & 同时展示 即,数据源 来自不同地方(如网络 + 本地),需要从不同的地方获取数据 & 同时展示 具体请看文章:Android RxJava 实际应用讲解:合并数据源 4.3 联合判断

    2.2K30

    【Android】RxJava + Retrofit完成网络请求

    在这片文章之前分别单独介绍过Rxjava以及Retrofit的使用: Android Retrofit 2.0 的使用 Android RxJava的使用(一)基本用法 (以及后面的几篇,就不一一列出了...) 使用 在了解了RxJava和Retrofit分别的用法后,RxJava、Retrofit的搭配使用也就不再话下了。...+ Retrofit 形式的时候,Retrofit 把请求封装进 Observable ,在请求结束后调用 onNext() 或在请求失败后调用 onError()。...可以看到,调用了service的login方法后得到Observable对象,在新的线程中执行网络请求,请求成功后切换到io线程执行保存用户信息的动作,最后再切换到主线程执行请求失败onError()、...RxJava的使用就暂时介绍到这里吧,使用过程中遇到好用的再出来跟大家分享。 以上有错误之处感谢指出 参考:给 Android 开发者的 RxJava 详解 (本文部分内容引用自该博客)

    1.2K100

    Android RxJava操作符详解 系列:功能性操作符

    前言 Rxjava,由于其基于事件流的链式调用、逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎。 ?...如果还不了解 RxJava,请看文章:Android:这是一篇 清晰 & 易懂的Rxjava 入门教程 RxJava如此受欢迎的原因,在于其提供了丰富 & 功能强大的操作符,几乎能完成所有的功能需求...作用 辅助被观察者(Observable) 在发送事件时实现一些功能性需求 如错误处理、线程调度等等 ---- 2. 类型 RxJava 2 中,常见的功能性操作符 主要有: ?...:Android RxJava:细说 线程控制(切换 / 调度 )(含Retrofit实例讲解) ---- 3.3 延迟操作 需求场景 即在被观察者发送事件前进行一些延迟的操作 对应操作符使用 delay...线程控制(切换 / 调度 ) 即,新开工作线程执行耗时操作;待执行完毕后,切换到主线程实时更新 UI 具体请看文章:Android RxJava:细说 线程控制(切换 / 调度 )(含Retrofit

    1.1K10
    领券