什么是RxJava?
RxJava就是一个编程框架,一个响应式编程框架。它采用的是观察者模式。
RxJava 是一个开源项目,地址:https://github.com/ReactiveX/RxJava
还有一个RxAndroid,用于 Android 开发,添加了 Android 用的接口。地址:https://github.com/ReactiveX/RxAndroid
RxJava在其GitHub的主页介绍是“a library for composing asynchronous and event-based programs using observable sequences for the Java VM",意思是:一个在Java VM使用可观测的序列来组成异步的,基于事件的程序的库。其实RxJava的本质可以压缩为“异步”一词,说到底他就是一个实现异步操作的库。
RxJava与AsyncTask/Handler....的区别以及突出点/优点是什么?
主要优势就是非常的简洁,异步操作很关键的一点就是程序的简洁。Android原生的AsyncTask和Handler就是用于使异步代码更为简洁。Rxjava突出的一点就是,它在随着程序逻辑越来越复杂的情况下还可以继续保持简洁。
举例:假设有这样一个需求:界面上有一个自定义的视图 imageCollectorView
,它的作用是显示多张图片,并能使用 addImage(Bitmap)
方法来任意增加显示的图片。现在需要程序将一个给出的目录数组 File[] folders
中每个目录下的 png 图片都加载出来并显示在imageCollectorView
中。需要注意的是,由于读取图片的这一过程较为耗时,需要放在后台执行,而图片的显示则必须在 UI 线程执行。常用的实现方式有多种,如:
private void loadImage() {
new Thread() {
public void run() {
for (File folder : folders) {
File[] listFiles = folder.listFiles();
for (File file : listFiles) {
if (file.getName().endsWith(".png")) {
final Bitmap bitmap = getBitmapFromFile(file);
runOnUiThread(new Runnable() {
public void run() {
imageView.setImageBitmap(bitmap);
}
});
}
}
}
};
}.start();
}
而如果使用RxJava来实现: