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

或许,你有好的想法,好的意见,可以关注公众号私信给我们!

给android开发者的rx,给Android开发者的RxJava 详解,解你多年困扰!相关推荐

  1. android ------- 开发者的 RxJava 详解

    在正文开始之前的最后,放上 GitHub 链接和引入依赖的 gradle 代码: Github:  https://github.com/ReactiveX/RxJava  https://githu ...

  2. 开发者须知:关于 Android L 的一切

    Google在I/O 2014大会上发布了全新移动操作系统Android L的开发者预览版本,相对于上一版本来说,Android L在UI风格.界面切换.和原生应用等各方面都发生了比较大的变化,目前该 ...

  3. 开发者必看|Android 8.0 新特性及开发指南

    背景介绍 谷歌2017I/O开发者大会今年将于5月17-19日在美国加州举办.大会将跟往年一样发布最新的 Android 系统,今年为 Android 8.0.谷歌在今年3 月21日发布 Androi ...

  4. Android 大牛 国内、国外Android开发者博客

    下面这些内容是 @Trinea大神汇总的国内.国外Android开发者博客. 国内开发者汇总:android-cn/android-dev-cn · GitHub 邓凡平 Innost的专栏 魏祝林 ...

  5. android o 开发者大会,谷歌开发者大会刚结束Android O又要来了?

    原标题:谷歌开发者大会刚结束Android O又要来了? [天极网手机频道]刚刚在开发者大会发布了AndroidN的谷歌如今又有新消息啦,Android N的下一个版本名称叫做"Androi ...

  6. Android Oreo 常见问题 3.0 | Android 开发者 FAQ Vol.11

    自 Android Oreo 发布以来,我们陆续收到了开发者们提出的一些新系统相关问题.尤其在 1 月期间我们专门制作并上传了 Oreo 新功能应用的中文教学视频,帮助大家更快掌握系统新特性.在众多问 ...

  7. Android性能优化之工具篇 — — 开发者选项

    Google为了方便开发者调试Android程序专门开发了开发者选项功能,能够让开发者方便快捷调试Android应用程序.对于一般用户无需关注,所以往往开发者选项在新版本中都会隐藏,需要特殊操作才会展 ...

  8. 除了 Android 12,Google I/O 开发者大会还有哪些亮点?

    整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 头图 | 来自谷歌官方 去年,因为一场席卷全球.突如其来的特殊情况,出于安全考虑,谷歌首次取消了一年一度的 Google I/O 开发者 ...

  9. 【Android取证篇】Android设备USB调试打开方式(开发者模式)

    [Android取证篇]Android设备USB调试打开方式(开发者模式) Android各个版本系统手机开启"USB调试"的入口不全相同,仅供参考-[蘇小沐] 1.[Androi ...

  10. 首批适配Android 13 Beta,vivo为开发者提供体验尝鲜

    2022 年谷歌 I/O 开发者大会正式召开,宣布带来安卓系统最新版本Android 13 Beta.作为首批适配的科技企业,vivo第一时间为vivo X80 Pro提供开发者适配版本,以期尽早给予 ...

最新文章

  1. 请不要将抛出异常作为业务逻辑使用!!!
  2. 线程间的通信 共享数据安全问题
  3. java动态代理--代理接口无实现类
  4. Debug method
  5. Codeforces Round #530 Div. 1 自闭记
  6. python函数type的用意_Python内置函数Type()函数一个有趣的用法
  7. 3dmax高版本转低版本插件_3dmax高版本和低版本中视口配置如何去阴影
  8. 吴恩达|机器学习作业7.0.k-means聚类
  9. Linux上快速安装软RAID详细步骤
  10. 数据结构图文解析之:二分查找及与其相关的几个问题解析
  11. 常用视频像素格式NV12、NV21、I420、YV12、YUYV
  12. AI学习教程:AI(Adobe lliustrator)快速入门
  13. BZOJ 3168: [Heoi2013]钙铁锌硒维生素
  14. 感性认识spring的IoC
  15. 2021-08-08 WPF控件专题 WrapPanel 控件详解
  16. idea中git更新代码到本地之后自己写的代码不见了
  17. mysql分组并查询最新记录信息(亲测有效)
  18. PMP备考错题集-作业习题二
  19. java调用R语言传参数时,RserveException: eval failed Syntax error
  20. LaTeX中的宽度单位em,ex,px,pt

热门文章

  1. javascript中replace()
  2. Don't be afraid. You are stronger than you think.
  3. 黑马程序员 Python学习笔记之 变量的命名
  4. Atitit 在线支付系统功能设计原理与解决方案 与目录
  5. Atitit.软件GUI按钮与仪表盘(01)--报警系统--
  6. paip.输入法编程----一级汉字1000个
  7. paip.脚本操作IIS启动停止站点
  8. paip. JAVA快速开发IDE与JSF技术
  9. 六种数据格式CSV、 Pickle、MessagePack、HDF5、Feather、 Parquet的比较
  10. 基金01、03文件,92、94文件、52、53、59等文件是指什么