RxJava 到底是什么
一个词:异步。
RxJava 在 GitHub 主页上的自我介绍是 "a library for composing asynchronous and event-based programs using observable sequences for the Java VM"(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。这就是 RxJava ,概括得非常精准。
然而,对于初学者来说,这太难看懂了。因为它是一个『总结』,而初学者更需要一个『引言』。
其实, RxJava 的本质可以压缩为异步这一个词。说到根上,它就是一个实现异步操作的库,而别的定语都是基于这之上的。
RxJava 好在哪
换句话说,『同样是做异步,为什么人们用它,而不用现成的 AsyncTask / Handler / XXX / ... ?』
假设有这样一个需求:界面上有一个自定义的视图 imageCollectorView ,它的作用是显示多张图片,并能使用 addImage(Bitmap) 方法来任意增加显示的图片。现在需要程序将一个给出的目录数组 File[] folders 中每个目录下的 png 图片都加载出来并显示在 imageCollectorView 中。需要注意的是,由于读取图片的这一过程较为耗时,需要放在后台执行,而图片的显示则必须在 UI 线程执行。常用的实现方式有多种,我这里贴出其中一种:
而如果使用 RxJava ,实现方式是这样的:
那位说话了:『你这代码明明变多了啊!简洁个毛啊!』大兄弟你消消气,我说的是逻辑的简洁,不是单纯的代码量少(逻辑简洁才是提升读写代码速度的必杀技对不?)。观察一下你会发现, RxJava 的这个实现,是一条从上到下的链式调用,没有任何嵌套,这在逻辑的简洁性上是具有优势的。当需求变得复杂时,这种优势将更加明显(试想如果还要求只选取前 10 张图片,常规方式要怎么办?如果有更多这样那样的要求呢?再试想,在这一大堆需求实现完两个月之后需要改功能,当你翻回这里看到自己当初写下的那一片迷之缩进,你能保证自己将迅速看懂,而不是对着代码重新捋一遍思路?)。
另外,如果你的 IDE 是 Android Studio ,其实每次打开某个 Java 文件的时候,你会看到被自动 Lambda 化的预览,这将让你更加清晰地看到程序逻辑:
以下是推荐阅读:
给 Android 开发者的 RxJava 详解
RxJava 今年越来越火,但由于概念比较复杂,导致比较难上手。现在还没有成功上手 RxJava 或者已经上手但仍对 RxJava 心存疑惑的同学可以来看看这篇文章。
深入讲解 Android 中的 Activity launchMode
Android系统中的Activity可以说一件很赞的设计,它在内存管理上良好的设计,使得多任务管理在Android系统中运行游刃有余。但是Activity绝非启动展示在屏幕而已,其启动方式也大有学问,本文讲具体介绍Activity的启动模式的诸多细节,纠正一些开发中可能错误的观点,帮助大家深入理解Activity。
如何提高安卓代码的质量和语法
文章中作者提出了用自动工具(例如Checkstyle、 Findbugs、 PMD和Android Lint)提高安卓代码质量和语法的不同方法。
Archi - 用三种 Android 代码架构来重构一个应用
文章中作者提出了用自动工具(例如Checkstyle、 Findbugs、 PMD和Android Lint)提高安卓代码质量和语法的不同方法。
BGARefreshLayout - Android 下拉刷新效果库
Android开发者使用BGARefreshLayout-Android可以对各种控件实现多种下拉刷新效果、上拉加载更多以及配置自定义头部广告位。
专访DroidPlugin作者张勇:安卓黑科技是怎样炼成的
前段时间,奇虎360在Github上发布了一个Android开源项目DroidPlugin,这是一个实现动态加载的Android插件框架,可以免安装、免修改的运行第三方APK。DroidPlugin的目的是改进大型APP的架构,实现多团队协作开发。
文章地址:http://www.ituring.com.cn/article/205619
或许,你有好的想法,好的意见,可以关注公众号私信给我们!