文章目录
  1. 1. RxJava是什么?
  2. 2. RxJava解决了什么问题?
  3. 3. Hello World

RxJava是什么?

RxJava is a Java VM implementation of Reactive Extensions: a library for composing asynchronous and event-based programs by using observable sequences.

翻译:一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库。RxJava官方地址:https://github.com/ReactiveX/RxJava

RxJava解决了什么问题?

RxJava近两年来越来越流行,越来越收到广大开发者青睐,肯定它有哪些魔力。这魔力解决了开发者开发过程中的某些痛点,结合对RxJava的理解,你会发现,其实它解决的是异步的问题。

RxJava是如何解决异步处理的问题的呢?开发中异步的主要场景时,耗时操作需要放到单独线程中,异步任务执行成功之后,在主线程中执行更新UI等其它操作。

使用RxJava之后,通过简单设置,就可以实现执行线程的切换,开发者只需要关心具体的逻辑,不用太多关心那个线程的问题。

Hello World

下面举一个异步下载图片,主线程更新显示出来的例子(例子用Android实现):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
String url = "https://avatars2.githubusercontent.com/u/3887795?v=2&s=60";

// 1.将网络地址转换为Drawable
Function<String, Drawable> str2Drawable = new Function<String, Drawable>() {
@Override
public Drawable apply(@NonNull String s) throws Exception {
Drawable drawable = null;
try {
drawable = Drawable.createFromStream(new URL(s).openStream(), "src");
} catch (IOException e) {
e.printStackTrace();
}
return drawable;
}
};

// 2.将drawable先是到imageview上
Consumer<Drawable> drawableConsumer = new Consumer<Drawable>() {
@Override
public void accept(Drawable drawable) throws Exception {
ivWebPic.setImageDrawable(drawable);
}
};

// 3.控制步骤1和步骤2执行线程
Observable.just(url)
.map(str2Drawable)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(drawableConsumer);

以上代码,下载图片逻辑和展示逻辑完全分离,实现逻辑分离。这只是一个Hello World例子,RxJava很有很多炫酷的功能期待你去解锁。


本文地址 http://ihongqiqu.com/2017/10/16/RxJava-Hello-World/ 作者为 Zhenguo

author:Zhenguo
Author: Zhenguo      Blog: http://ihongqiqu.com/     Email: jinzhenguo1990@gmail.com
I have almost 6 years of Android application development experience and have a keen interested in the latest emerging technologies. I use my spare time to turn my experience, ideas and love for Android tech into informative articles, tutorials and more in hope to help others and learn more.
文章目录
  1. 1. RxJava是什么?
  2. 2. RxJava解决了什么问题?
  3. 3. Hello World
返回顶部