首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    RxJava for Android学习笔记

    2) 创建 Observable Observable 即被观察者,它决定什么时候触发事件以及触发怎样的事件。...线程控制 线程控制 —— Scheduler (一) 在RxJava 中,Scheduler ——调度器,相当于线程控制器,RxJava 通过它来指定每一段代码应该运行在什么样的线程。...Bitmap showBitmap(bitmap); } }); map()方法将参数中的 String对象转换成一个 Bitmap对象后返回,而在经过 map()方法后,事件的参数类型也由 String...五.与EVENTBUS的区别 EventBus是一个发布 / 订阅的事件总线。简单点说,就是两人约定好怎么通信,一人发布消息,另外一个约定好的人立马接收到你发的消息。...3.能够知道什么时候订阅者已经接收了全部的数据。

    71630

    RxJava从入门到不离不弃(三)——转换操作符

    前面两篇文章中我们介绍了RxJava的一些基本概念和RxJava最简单的用法。从这一篇开始,我们开始聊聊RxJava中的操作符Operators。...RxJava中的操作符主要分成了三类: 转换类操作符(map flatMap concatMap flatMapIterable switchMap scan groupBy …); 过滤类操作符(fileter...可以看出: map() 方法将参数中的 String 对象转换成一个 Bitmap 对象后返回,而在经过 map() 方法后,事件的参数类型也由 String 转为了 Bitmap。...这种直接变换对象并返回的,是最常见的也最容易理解的变换。不过 RxJava 的变换远不止这样,它不仅可以针对事件对象,还可以针对整个事件队列,这使得 RxJava 变得非常灵活。...map被订阅时每传递一个事件执行一次onNext方法, flatmap多用于多对多,一对多,再被转化为多个时,一般利用from/just进行一一分发。

    93330

    有空就来学Hystrix RPC保护的原理,RPC监控之滑动窗口的实现原理

    ,只留下核心部分,简化的模拟执行流程如下: 首先,模拟HystrixCommand的事件发送机制,每100毫秒发送一个随机值(0或1),随机值为0代表失败,为1代表成功,模拟命令完成事件流。...- 滑动窗口的和: 在这个示例程序的代码中,eventStream流通过interval操作符每100毫秒发送一个随机值(0或1),随机值为0代表失败,为1代表成功,模拟HystrixCommand的事件发送机制...然后通过flatMap扁平化操作符对每一个Observable进行聚合,计算出各元素的累加值。...inputEventStream弹射出来;第二个参数numBuckets为设置的滑动窗口中的桶数量; 第三个参数bucketSizeInMs为每个桶对应的时间长度;第四个参数为将原始事件统计到累积桶(Bucket...桶计数流BucketedCounterStream的处理过程如图5-17所示。 图5-17 桶计数流BucketedCounterStream的处理过程 什么是累积桶呢?

    75310

    一篇博客让你了解RxJava

    RxJava可以说是2016年最流行的项目之一了,最近也接触了一下RxJava,于是想写一篇博客,希望能通过这篇博客让大家能对其进行了解,本篇博客是基于RxJava2.0,跟RxJava1.0还是有很多不同的...注意:但是事件的发送是有一定的规定的,就好比寄快递也要有一定要求,不是什么都能寄的: 1.被观察者可以发送无限个onNext, 观察者也可以接收无限个onNext. 2.当Observable发送了一个...super T> observer) {} 不带任何参数的subscribe() 表示Observer不关心任何事件,Observable发送什么数据都随你 带有一个Consumer参数的方法表示...这两个操作符的共同点在于,他们都是把一个对象转换为另一个对象,但须注意以下这些特点: 1.flatMap 返回的是一个Observable对象,而 map 返回的是一个普通转换后的对象; 2.flatMap...,Complete, 另一个发送A,B,C,Complete, 接着用Zip把发出的事件组合, 来看看运行结果吧: 观察发现observable1发送事件后,observable2才发送 这是因为我们两个

    53020

    我为什么嫌弃RxJava,不再推荐使用?

    来总结一下我RxJava遇到的坑,或者说我为什么不在推荐使用RxJava。相信熟悉或者关注我的朋友,绝大多数都是因为RxJava。所以看到这个标题你已经会惊讶。...作为RxJava坚定的拥护者,或者说自干五?为什么突然不再支持RxJava了呢? 先讲讲历史 在我的文章中已经讲过很多次RxJava诞生之初就是因为异步。...你永远无法预测你同事的RxJava水平 上面几点可能有点抽象,而这点和接下来的几点都是我在实际工作中遇到的实际情况。首先就是你并不能预测或者要求你的同事RxJava到达什么样的水平。...还有flatMap和concatMap的区别。简单的讲map是一对一,flatMap是一对N的map然后在进行flatten操作。还有些教程直接写出flatMap无序,concatMap有序。...这个Bug还是后台反馈给我的说为什么android每次都会发两个一模一样的请求?其实问题就出在stationLine和station并没有共享结果。造成了每次请求都要发两次。

    1.5K20

    RxJava 不是上帝,真不推荐再用了

    距离上一次更新关于RxJava也有一段时间了,其实这篇文章我早就想写,碍于一直没来得及总结(懒)。所以一直没有成文,今天就来总结一下我RxJava遇到的坑,或者说我为什么不在推荐使用RxJava。...你永远无法预测你同事的RxJava水平 上面几点可能有点抽象,而这点和接下来的几点都是我在实际工作中遇到的实际情况。首先就是你并不能预测或者要求你的同事RxJava到达什么样的水平。...RxJava的行为并不可预期 RxJava还有一大毛病就是光看方法名你很难知道他的真正意思。 在初学RxJava时候,两个一直纠缠不清的问题就是map和flatMap的区别。...这个Bug还是后台反馈给我的说为什么android每次都会发两个一模一样的请求? 其实问题就出在stationLine和station并没有共享结果。造成了每次请求都要发两次。...而且虽然RxJava的文档是我见过少有写的非常出色的库,但是很多操作符如果不读通源码,仅仅从Java Doc和Method Signature来观察,并不清楚期待的行为是什么。

    1.3K40

    RxJava中级进阶--map和flatmap

    今天要介绍两个我认为是RxJava中最牛逼的Operator, map和flatmap。 在掌握map和flatmap的基础上,就可以去了解RxJava的核心操作 lift() 。...看定义不如看代码,下面是之前通过网络获取天气情况的demo中的代码,用的是 Retrofit + RxJava, Observable.from(cities) .flatMap(new...注意这里说的是他们的参数 Func1 在返回值上的差异,不要搞成map和flatmap的返回值了,这俩的返回值都一样。...flatmap() 和 map() 花这么多篇幅讲这两个方法是因为它们是进一步了解RxJava的切入口,看 flatmap() 的源码就明白了, public final Observable什么我们要先熟悉 just/from/merge,map/flatmap,这些方法,再去了解 lift 的原因。 实际上在开发中掌握到 flatmap就能覆盖80%的业务需求了。

    2.5K30

    Rxjava2-小白入门(二)

    那么这节课我们主要讲解Rxjava2的基本使用和操作符。其实网上的关于Rxjava2的优秀文章有很多对我来说都是受益匪浅。...这篇我们主要是讲解Rxjava2的简单用法已经场景 ---- 首先我们先在我们的项目中添加依赖 compile 'io.reactivex.rxjava2:rxjava:2.0.0-RC5' compile.../RxJava RxAndroid : https://github.com/ReactiveX/RxAndroid 我把2者的官网发出来了大家有兴趣的可以大家了解 有的人会问RxAndroid是什么...我在把Rxjava文档给大家发出来方便大家对Rxjava更多的了解 Rxjava所有操作符文档 ---- Rxjava2的操作符 create just fromArray map flatMap zip...通过链式书写将所有操作一起完成,如果还有复杂的请求我们可以继续往下写。 为什么在等落的时候我们用的是flatmap而不是map呢?

    1.1K20

    RxJava 1.x 笔记:变换型操作符

    在写这几篇 RxJava 笔记时,发现官方文档很久都没有更新啊。 一些前辈两年前写的学习笔记内容跟现在也基本一致,RxJava 2.x 的文档也基本没有,不知道是不是缺实习生。...>getPrintSubscriber()); } 我们使用 interval() 创建一个每隔一秒发射递增整数序列的源 Observable,监视器是每隔 3 秒发射的 Observable...RxJava 中对应的实现是 flatMap(): public final Observable flatMap(Func1<? super T, ?...Scan Scan 的作用是扫描、累积。 它可以将每次发射的数据都进行指定的函数计算,计算的结果作为参数参与下一次计算。 ? RxJava 中有两种实现。...scan(accumulator) 第一种是接收一个 Func2 作为参数: public final Observable scan(Func2 accumulator) {

    95590

    RxJava再回首

    所以今天再回头整理一下RxJava的头绪,一方面给其它想了解RxJava的人提供参考,另一方面也是给自己将来再遗忘时回来翻阅。 1、RxJava是什么?...我们有Handler、AsyncTask等,都是简单好用的,为什么我们还要学习这么复杂的RxJava呢,原因就是RxJava更强,我总结了一下几点: 流式代码,书写和阅读都很流畅 线程切换方便快捷,支持...RxJava 通过Scheduler它来指定每一段代码应该运行在什么样的线程。...flatMap() 的原理是这样的:1. 使用传入的事件对象创建一个 Observable 对象;2. 并不发送这个 Observable, 而是将它激活,于是它开始发送事件;3....concatMap() scan 对一个序列的数据应用一个函数,并将这个函数的结果发射出去作为下个数据应用函数时的第一个参数使用,看一个例子: Observable.just(1, 2, 3, 4, 5

    82910

    基于rxjava的生产消费模型

    一、前言 最近在看springcloud的熔断机制的实现,发现底层使用的rxjava实现,就看了下rxjava的使用,发现rxjava使用可也便捷实现前面讲解的定时生产与消费。...image.png prouducerTimer是一个定时器做生产者使用,间隔3s调用一次run方法 代码(1)创建一个任务 代码(2)创建一个观察者对象,Observable.interval方法间隔...1秒发射出一个对象,比如第一秒发射出0,第二秒发射出1....。...这里保证了生成的观察这对象只会发射出3个元素,并且是间隔1s发出。但是这时候发射出的是0,1,2而不是代码(1)生成的任务。所以使用flatMap方法对元素进行转换,转换为代码(1)生成的元素。...image.png 可知同一个元素在连续的3s内被消费了。 三、总结 rxjava的功能挺强大的,合理的排列他提供的功能可以大大简化我们的开发成本。 作者:加多

    66220

    RxJava2 实战知识梳理(6) - 基于错误类型的重试请求

    下面我们就来演示如何通过RxJava2来轻松实现上面的三点需求,通过这篇文章,我们将学习retryWhen操作符的具体用法,retryWhen和repeatWhen经常被大家用来比较,如果对repeatWhen...感兴趣的同学可以阅读上一篇文章 RxJava2 实战知识梳理(5) - 简单及进阶的轮询操作。...也就是说,它 仅仅是作为一个是否要触发重订阅的通知,onNext发送的是什么数据并不重要。...在Function函数中,必须对输入的 Observable进行处理,这里我们使用的是flatMap操作符接收上游的数据,对于flatMap的解释,大家可以参考 RxJava2 实战知识梳理...2.2 retryWhen 和 repeatWhen 对比 在 RxJava2 实战知识梳理(5) - 简单及进阶的轮询操作 中我们已经对repeatWhen进行了介绍,让我们再来看一下它的原理图

    1.5K10

    Android RxJava应用:变换操作符

    类型 RxJava中常见的变换操作符如下: 下面,我将对每种操作符进行详细介绍 注:本文只讲解RxJava2在开发过程中常用的变换操作符 3....应用场景 & 对应操作符 介绍 下面,我将对 RxJava2 中的变换操作符进行逐个讲解 注:在使用RxJava 2操作符前,记得在项目的Gradle中添加依赖: dependencies {...String类型 对象后返回 同时,事件的参数类型也由 Integer 类型变成了 String 类型 3.2 FlatMap() 作用:将被观察者发送的事件序列进行 拆分 & 单独转换,再合并成一个新的事件序列...至此,关于RxJava2中主要的变换操作符已经讲解完毕 4....Demo地址 上述所有的Demo源代码都存放在:Carson_Ho的Github地址:RxJava2_变换操作符 6. 总结 下面,我将用一张图总结 RxJava2 中常用的变换操作符

    43120

    Rxjava源码解析笔记 | 剖析map、flatmap操作符的使用与联系

    操作符 Rxjava提供了对事件序列进行变换的支持; 变换: 核心功能; 就是将事件序列中的(事件)对象或整个序列进行加工处理; 转换成不同的事件或者事件序列; map操作符:就是用来把一个事件转换为另一个事件的...两个), 注意Func1是Rxjava中的一个接口, 它用于包装含有参数的方法, Observable.just("map/image/map.png") .map(new Func1的原因; Rxjava可以通过不同种类的操作符来完成新的Observable的创建, 进而进行链式调用 !!!...map()函数接受一个Func1类型的参数, 然后把这个Func1应用到每一个由Observable发射的值上, 将发射的值转换为我们期望的值; map()是Rxjava中操作符的最常见的一种使用...Rxjava官网上的一张图 map是会将事件一一对应, 映射成一个新的事件, flatmap则会将所有的事件,转换成一个Observable, 然后由这个统一的Observable来进行事件的分发

    85720
    领券