RxJava 的基本使用

概述 
RxJava 就是一个实现异步操作的库。它可以代替我们的 Handler,AsynTask。

简介 
RxJava 最核心的两个东西是 Observables(被观察者,事件源)和 Subscribers(观察者)。

Observables 发出一系列事件,Subscribers 处理这些事件。

一个 Observable 可以发出零个或者多个事件,知道结束或者出错。每发出一个事件,就会 调用它的 Subscriber 的 onNext 方法,最后调用 Subscriber.onNext()或者 Subscriber.onError() 结束。 
注意:Rxjava 的看起来很想设计模式中的观察者模式,但是有一点明显不同,那就是如果一 个 Observerble 没有任何的的 Subscriber,那么这个 Observable 是不会发出任何事件的。

HelloWord 

首先关联包

compile ‘io.reactivex:rxandroid:1.2.1‘

compile ‘io.reactivex:rxjava:1.1.6‘

//定义一个被观察者

Observable<String> myObservable = Observable.create( new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> sub) {  //向观察者发出通知                 sub.onNext("Hello, world!");                   sub.onCompleted();                   }             }       ); 

这里定义的 Observable 对象仅仅发出一个 Hello World 字符串,然后就结束了。

接着创建一个 Subscriber 来处理 Observable 对象发出的字符串。

  //观察者有三个方法
  Subscriber<String> mySubscriber = new Subscriber<String>() {
  @Override
  public void onNext(String s) {
  System.out.println(s);
  }
  @Override
  public void onCompleted() { }  

   @Override
   public void onError(Throwable e) { }      };   

//让观察者和被观察者产生关系
myObservable.subscribe(mySubscriber); 

//订阅后myObservable就是调用mySubscriber对象的onNext和onComplete方法, mySubscriber 就会打印出 Hello World!

HelloWord 简化

//RxJava 内置了很多简化创建 Observable 对象的函数,比如 Observable.just 创建只发出一

//个事件就结束的 Observable 对象,可以简化为一行

Observable<String> myObservable = Observable.just("Hello, world!"); 

// 接下来看看如何简化Subscriber,上面的例子中,我们其实并不关心OnComplete和OnError,

// 只需要在 onNext 的时候做一些处理,这时候就可以使用 Action1 类。

  Action1<String> onNextAction = new Action1<String>() {
   @Override
   public void call(String s) {
   System.out.println(s);
       }
   };
 

subscribe 方法有一个重载版本,接受三个 Action1 类型的参数,分别对应 OnNext, OnComplete, OnError 函数。

 //现在的
 myObservable.subscribe(onNextAction);
 //可以再整体简化
 Observable.just("Hello, world!")
 .subscribe(new Action1<String>() {
 @Override
 public void call(String s) {
 System.out.println(s);
     }
 });

原文地址:https://www.cnblogs.com/yanglanwan/p/11291557.html

时间: 2024-11-13 09:33:15

RxJava 的基本使用的相关文章

一起来造一个RxJava,揭秘RxJava的实现原理

RxJava是一个神奇的框架,用法很简单,但内部实现有点复杂,代码逻辑有点绕.我读源码时,确实有点似懂非懂的感觉.网上关于RxJava源码分析的文章,源码贴了一大堆,代码逻辑绕来绕去的,让人看得云里雾里的.既然用拆轮子的方式来分析源码比较难啃,不如换种方式,以造轮子的方式,将源码中与性能.兼容性.扩展性有关的代码剔除,留下核心代码带大家揭秘RxJava的实现原理. 什么是响应式编程 首先,我们需要明确,RxJava是Reactive Programming在Java中的一种实现.什么是响应式编程

RxJava概叙

给Android开发者的 RxJava 详解:http://gank.io/post/560e15be2dca930e00da1083 响应式编程是一种异步数据流交互的编程范式,而RxJava就是基于事件操作异步数据流在Java上实现的库 核心的理念是将一切都当做数据流来看待,各种变量,用户输入,数据结构,缓存等等 而Rx库提供了高度抽象的函数来操作流,创建.流入流出.过滤.合并.映射等等各种变换 不仅如此,Rx库还使得异步操作,和错误处理变得非常简洁. 使用了RxJava后明显的好处就是 1解

RxJava从入门到放弃---关于RxJava-入门必看

RxJava 到底是什么 RxJava 好在哪 API 介绍和原理简析 1. 概念:扩展的观察者模式 观察者模式 RxJava 的观察者模式 2. 基本实现 1) 创建 Observer 2) 创建 Observable 3) Subscribe (订阅) 4) 场景示例 a. 打印字符串数组 b. 由 id 取得图片并显示 3. 线程控制 -- Scheduler (一) 1) Scheduler 的 API (一) 2) Scheduler 的原理 (一) 4. 变换 1) API 2) 变

Rxjava+ReTrofit+okHttp深入浅出-终极封装

Rxjava+ReTrofit+okHttp深入浅出-终极封装 背景: 学习Rxjava和retrofit已经很长时间了,功能确实很强大,但是使用起来还是有点复杂,代码的重复性太高,所以决定把基于retrofit和rxjava的处理统一封装起来,实现的功能: 1.Retrofit+Rxjava+okhttp基本使用方法 2.统一处理请求数据格式 3.统一的ProgressDialog和回调Subscriber处理 4.取消http请求 5.预处理http请求 5.返回数据的统一判断 效果: 封装

RxJava开发精要6 – Observables组合

原文出自<RxJava Essentials> 原文作者 : Ivan Morgillo 译文出自 : 开发技术前线 www.devtf.cn 转载声明: 本译文已授权开发者头条享有独家转载权,未经允许,不得转载! 译者 : yuxingxin 项目地址 : RxJava-Essentials-CN 上一章中,我们学到如何转换可观测序列.我们也看到了map(),scan(),groupBY(),以及更多有用的函数的实际例子,它们帮助我们操作Observable来创建我们想要的Observabl

RxJava & RxAndroid备忘

"你问我要去向何方,我指着大海的方向" 今天在刷G+的时候看到Dave Smith推荐了一个视频 <Learning RxJava (for Android) by example> 点进去看了一下,原来是位熟悉的"阿三哥",视频封面如下:(没有歧视的意思,不要喷我啊~,为什么感到熟悉?接着往下看) 几乎同时也看到了JetBrains在G+也推荐了篇在Medium上的博文 <RxAndroid And Kotlin (Part 1)> ,然后

给 Android 开发者的 RxJava 详解

作者:扔物线 前言 我从去年开始使用 RxJava ,到现在一年多了.今年加入了 Flipboard 后,看到 Flipboard 的 Android 项目也在使用 RxJava ,并且使用的场景越来越多 .而最近这几个月,我也发现国内越来越多的人开始提及 RxJava .有人说『RxJava 真是太好用了』,有人说『RxJava 真是太难用了』,另外更多的人表示:我真的百度了也谷歌了,但我还是想问: RxJava 到底是什么? 鉴于 RxJava 目前这种既火爆又神秘的现状,而我又在一年的使用

最适合使用RxJava处理的四种场景

下面我们开始介绍RxJava最适合使用的四种场景,代码示例基于RxJava1 场景一: 单请求异步处理 由于在Android UI线程中不能做一些耗时操作,比如网络请求,大文件保存等,所以在开发中经常会碰到异步处理的情况,我们最典型的使用场景是RxJava+Retrofit处理网络请求 MyService myService = retrofit.create(MyService.class);myService.getSomething() .subscribeOn(Schedulers.io

转:深入浅出RxJava(二:操作符)

原文地址:http://blog.csdn.net/lzyzsd/article/details/44094895#comments 在第一篇blog中,我介绍了RxJava的一些基础知识,同时也介绍了map()操作符.当然如果你并没有意愿去使用RxJava我一点都不诧异,毕竟才接触了这么点.看完这篇blog,我相信你肯定想立即在你的项目中使用RxJava了,这篇blog将介绍许多RxJava中的操作符,RxJava的强大性就来自于它所定义的操作符. 首先先看一个例子: 准备工作 假设我有这样一

RxJava 与 Retrofit

RxJava 与 Retrofit