前言
开发Android应用的时候,最常见的问题就是异步处理了,针对这个问题往往采用回调解决,这样带来的问题就是会让我们的代码可读性很差,举个例子
假设有这样一个需求:界面上有一个自定义的视图 imageCollectorView ,它的作用是显示多张图片,并能使用 addImage(Bitmap) 方法来任意增加显示的图片。现在需要程序将一个给出的目录数组 File[] folders 中每个目录下的 png 图片都加载出来并显示在 imageCollectorView 中。需要注意的是,由于读取图片的这一过程较为耗时,需要放在后台执行,而图片的显示则必须在 UI 线程执行。常用的实现方式有多种,下面这种方法明显成了一个“人”字,也许自己刚写出来比较容易看懂,但是后期维护起来肯定很困难。
new Thread() { @Override public void run() { super.run(); for (File folder : folders) { File[] files = folder.listFiles(); for (File file : files) { if (file.getName().endsWith(".png")) { final Bitmap bitmap = getBitmapFromFile(file); getActivity().runOnUiThread(new Runnable() { @Override public void run() { imageCollectorView.addImage(bitmap); } }); } } } } }.start();
Rxjava & RxAndroid
本篇的主角就是用来解决上面的问题的,因为网上优质介绍的博客很多了,所以我就分享给大家很有代表性的几篇。
入门篇:概念
防止链接失效地址:给 Android 开发者的 RxJava 详解
深入篇:实际demo
防止链接失效地址:从案例学RxAndroid开发 (上、下)
最新篇:2.0
因为截至本文章发出,最新版为2.0,网上的优质博客大多数是基于1.X的,所以贴出几篇
防止链接失效地址:关于 RxJava 最友好的文章—— RxJava 2
防止链接失效地址:RxJava2 浅析 - 泡在网上的日子
技术的迭代真是一年一个时代