1.前言
Rxjava官方github地址:https://github.com/ReactiveX/RxJava
Rxjava是啥?
官方的解释是这样的:
“a library for composing asynchronous and event-based programs using observable sequences for the Java VM”
意思是:一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库
说白了Rxjava就是java语言开发中用于异步操作。一开始可看到Rxjava的时候还以为是一个基于java的一种新的语言,从官方的解释也可以看出来。Rx并不是一种新的语言,而是一种普通的Java模式,类似于观察者模式(Observer Pattern),可以将它看作一个普通的Java类库,因此你可以立即使用RxJava。
对Rxjava还不明白的可以参考:
- 给 Android 开发者的 RxJava详解:http://gank.io/post/560e15be2dca930e00da1083
- 深入浅出RxJava(一:基础篇)http://blog.csdn.net/lzyzsd/article/details/41833541
大头鬼的文章,翻译的国外的文章,比较早一点,还算详细。 - 这一系列呼啸而过的文章,比较详细,我很推荐,比较新。 Android RxJava使用介绍(一) Hello
World:http://blog.csdn.net/job_hesc/article/details/45798307
2.Rxjava基本工作流程:
RxJava最核心的两个东西是Observables(被观察者,事件源)和Subscribers(观察者)。Observables发出一系列事件,Subscribers处理这些事件。在Subscribers接受到事件结果之前我们可以很方便地对结果做出各种处理拦截等等。
RxJava 的观察者模式大致如下图:
对于android开发者来说,只需要在build.gradle文件中加入:
compile 'io.reactivex:rxandroid:1.2.0' compile 'io.reactivex:rxjava:1.1.5'
3.Hello World
写什么程序都要先来一个hello world,下面就是rxjava的hello world:
private void rxTest(){ /***************************************正常步骤******************************************/ /**消息源,被观察着**/ Observable <String> myObservable = Observable.create( new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("Hello world!!"); subscriber.onCompleted(); } } ); /**接受处,观察者**/ Subscriber<String> mySubscriber = new Subscriber<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { Log.d("danxx" ,"onNext--->"+s); } }; /**注册观察者**/ myObservable.subscribe(mySubscriber); /***************************************简化步骤******************************************/ /**Integer类型参数**/ Observable.just(6).subscribe( new Action1<Integer>() { @Override public void call(Integer integer) { Log.d("danxx" ,"Integer--->"+integer); } } ); /**String类型参数**/ Observable.just("String args").subscribe( new Action1<String>() { @Override public void call(String s) { Log.d("danxx" ,"String--->"+s); } } ); /***************************************map操作******************************************/ /**map感觉就是一个中间加工厂,可以把结果做处理,减少观察者的处理步骤**/ Observable.just("I am ->") .map(new Func1<String, String>() { @Override public String call(String s) { /**map处理结果**/ return s+"map"; } }).subscribe(new Action1<String>() { @Override public void call(String s) { Log.d("danxx" ,"map 处理后的结果 String--->"+s); } }); }
4.Rxjava操作符
上面我们看到了map操作符,其实Observable的create也是操作符,Rxjava操作符其实就是就java中的方法,只是换了一种称呼。Rxjava的操作符有很多很多,详尽的操作符请看官网的说明,当然是英文版的。Rxjava operators地址:http://reactivex.io/documentation/operators.html
下面是大概列举一下:
- Creating Observables(Observable的创建操作符),比如:Observable.create()、Observable.just()、Observable.from()等等;
- Transforming Observables(Observable的转换操作符),比如:observable.map()、observable.flatMap()、observable.buffer()等等;
- Filtering Observables(Observable的过滤操作符),比如:observable.filter()、observable.sample()、observable.take()等等;
- Combining Observables(Observable的组合操作符),比如:observable.join()、observable.merge()、observable.combineLatest()等等;
- Error Handling Operators(Observable的错误处理操作符),比如:observable.onErrorResumeNext()、observable.retry()等等;
- Observable Utility Operators(Observable的功能性操作符),比如:observable.subscribeOn()、observable.observeOn()、observable.delay()等等;
- Conditional and Boolean Operators(Observable的条件操作符),比如:observable.amb()、observable.contains()、observable.skipUntil()等等;
- Mathematical and Aggregate Operators(Observable数学运算及聚合操作符),比如:observable.count()、observable.reduce()、observable.concat()等等;
- 其他如observable.toList()、observable.connect()、observable.publish()等等;
呼啸而过大神有三篇文章来介绍Rxjava操作符:
- Android RxJava使用介绍(二) RxJava的操作符:http://blog.csdn.net/job_hesc/article/details/46242117
- Android RxJava使用介绍(三) RxJava的操作符:http://blog.csdn.net/job_hesc/article/details/46495281
- Android RxJava使用介绍(四) RxJava的操作符:http://blog.csdn.net/job_hesc/article/details/46612015
呼啸而过大神的四篇文章建议你认真读完。
相关推荐
在本文中,我们将深入探讨 RxJava 的基础知识,以及如何通过入门书籍来学习这一强大的工具。 首先,我们要理解什么是反应式编程。这是一种编程范式,它将数据流和变换视为计算的核心。RxJava 将事件、数据或任何...
上个月RxJava2正式版发布了,但目前国内的资料还比较少,以前使用过RxJava1只需要看看更新文档就知道怎么使用了,但还有一些以前没用过RxJava的朋友可能就不...所以写下这个教程, 帮助那些没有用过RxJava的朋友入门。
RxJava入门及Android应用详解 RxJava是一种在Java虚拟机(JVM)上运行的库,它引入了反应式编程的概念,使得处理异步数据流和事件变得更加简单和优雅。在Android开发中,由于其强大的功能和灵活性,RxJava被广泛用于...
RxJava 2.0 图文入门教程 RxJava 是一个基于事件驱动的异步编程框架,用于处理数据流和事件流。RxJava 2.0 是 RxJava 的最新版本,提供了许多新的特性和改进。 RxJava 的核心概念是 Observable 和 Observer。...
本文档旨在介绍 RxJava2 中的基础 API 和常用的操作符,为初学者提供一个入门级的学习指南。 #### 二、RxJava2 基础概念 ##### 2.1 被观察者 (Observable) 被观察者是 RxJava 中的核心组件之一,它负责发送数据项...
- **基础入门**:首先理解响应式编程的基本概念,掌握RxJava的基础用法,包括如何创建Observable和Observer。 - **进阶实践**:深入了解RxJava提供的各种操作符,学会如何组合这些操作符来解决实际问题。 - **高级...
本书是一本Android进阶类书籍,书中各...本书详细并深入讲解Android开发者必备的和前沿的知识,适合有一定开发基础的开发者阅读,这有助于他们提高技术水平;同时,本书系统的知识体系结构也令高级开发者从中获益良多。
### RxJava基础知识点 RxJava是一个基于响应式编程模式的Java库,主要用于处理异步和基于事件的数据流。响应式编程是一种编程范式,它允许我们以声明的方式处理异步数据流和变化,让数据流和变化传播变得可观察。...
- **RxJava入门指南**:介绍如何快速上手RxJava。 - **RxJava使用示例**:展示如何在实际场景中使用RxJava。 - **实现自定义操作符**:教用户如何根据需求扩展RxJava的功能。 - **自定义插件**:介绍如何开发和使用...
这一步是理解RxJava的关键,因为它将理论和实践相结合,帮助开发者快速入门。 第四章和第五章分别深入探讨了Observable序列的过滤和转换。过滤是选择性地从Observable序列中挑选符合特定条件的数据项,而转换则是...
1. **创建Retrofit实例**:首先,我们需要定义一个Retrofit.Builder对象,指定基础URL和服务接口,然后构建Retrofit实例。 ```java Retrofit retrofit = new Retrofit.Builder() .baseUrl(...
"Android基础入门小案例+源代码(60个)"是一个极好的资源,它提供了60个具体的小项目,帮助初学者通过实践理解Android开发的核心概念。下面将详细阐述这些案例可能涉及的知识点,以及如何利用它们来提升技能。 1. ...
【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流...
本教程旨在为初学者提供一个全面的Android开发入门指南,通过源码分析,帮助学习者快速掌握Android开发的基本技能。 首先,Android的基础知识包括环境搭建。你需要下载并安装Android Studio,它是官方推荐的集成...
这两部PDF教程,"Android开发入门教程"和"Android手机程序电子书开发",都是针对初学者精心编写的指南,旨在帮助他们快速理解和掌握Android应用开发的基础知识。 首先,"Android开发入门教程"可能涵盖了以下几个...
通过这套《Android从入门到精通》教程,你将系统地学习Android开发,从基础知识到高级特性,一步步成长为一名合格的Android开发者。无论你是零基础的新手还是希望提升技能的开发者,都能在其中找到适合自己的学习...
通过学习《Android开发从入门到精通》,读者将能够系统地了解Android开发的全过程,为成为一名合格的Android开发者打下坚实基础。这本书适合完全没有Android开发经验的初学者,也对有一定基础的开发者有很好的复习和...
随着RxJava和Kotlin协程的流行,理解它们的工作原理和优势也很重要。 Android SDK提供了一系列API,如网络通信(HttpURLConnection、OkHttp、Retrofit等)、多媒体处理(MediaPlayer、ExoPlayer)、地理位置...