给android开发者的rx,给Android开发者的RxJava 详解,解你多年困扰!
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 详解,解你多年困扰!相关推荐
- android ------- 开发者的 RxJava 详解
在正文开始之前的最后,放上 GitHub 链接和引入依赖的 gradle 代码: Github: https://github.com/ReactiveX/RxJava https://githu ...
- 开发者须知:关于 Android L 的一切
Google在I/O 2014大会上发布了全新移动操作系统Android L的开发者预览版本,相对于上一版本来说,Android L在UI风格.界面切换.和原生应用等各方面都发生了比较大的变化,目前该 ...
- 开发者必看|Android 8.0 新特性及开发指南
背景介绍 谷歌2017I/O开发者大会今年将于5月17-19日在美国加州举办.大会将跟往年一样发布最新的 Android 系统,今年为 Android 8.0.谷歌在今年3 月21日发布 Androi ...
- Android 大牛 国内、国外Android开发者博客
下面这些内容是 @Trinea大神汇总的国内.国外Android开发者博客. 国内开发者汇总:android-cn/android-dev-cn · GitHub 邓凡平 Innost的专栏 魏祝林 ...
- android o 开发者大会,谷歌开发者大会刚结束Android O又要来了?
原标题:谷歌开发者大会刚结束Android O又要来了? [天极网手机频道]刚刚在开发者大会发布了AndroidN的谷歌如今又有新消息啦,Android N的下一个版本名称叫做"Androi ...
- Android Oreo 常见问题 3.0 | Android 开发者 FAQ Vol.11
自 Android Oreo 发布以来,我们陆续收到了开发者们提出的一些新系统相关问题.尤其在 1 月期间我们专门制作并上传了 Oreo 新功能应用的中文教学视频,帮助大家更快掌握系统新特性.在众多问 ...
- Android性能优化之工具篇 — — 开发者选项
Google为了方便开发者调试Android程序专门开发了开发者选项功能,能够让开发者方便快捷调试Android应用程序.对于一般用户无需关注,所以往往开发者选项在新版本中都会隐藏,需要特殊操作才会展 ...
- 除了 Android 12,Google I/O 开发者大会还有哪些亮点?
整理 | 郑丽媛 出品 | CSDN(ID:CSDNnews) 头图 | 来自谷歌官方 去年,因为一场席卷全球.突如其来的特殊情况,出于安全考虑,谷歌首次取消了一年一度的 Google I/O 开发者 ...
- 【Android取证篇】Android设备USB调试打开方式(开发者模式)
[Android取证篇]Android设备USB调试打开方式(开发者模式) Android各个版本系统手机开启"USB调试"的入口不全相同,仅供参考-[蘇小沐] 1.[Androi ...
- 首批适配Android 13 Beta,vivo为开发者提供体验尝鲜
2022 年谷歌 I/O 开发者大会正式召开,宣布带来安卓系统最新版本Android 13 Beta.作为首批适配的科技企业,vivo第一时间为vivo X80 Pro提供开发者适配版本,以期尽早给予 ...
最新文章
- 请不要将抛出异常作为业务逻辑使用!!!
- 线程间的通信 共享数据安全问题
- java动态代理--代理接口无实现类
- Debug method
- Codeforces Round #530 Div. 1 自闭记
- python函数type的用意_Python内置函数Type()函数一个有趣的用法
- 3dmax高版本转低版本插件_3dmax高版本和低版本中视口配置如何去阴影
- 吴恩达|机器学习作业7.0.k-means聚类
- Linux上快速安装软RAID详细步骤
- 数据结构图文解析之:二分查找及与其相关的几个问题解析
- 常用视频像素格式NV12、NV21、I420、YV12、YUYV
- AI学习教程:AI(Adobe lliustrator)快速入门
- BZOJ 3168: [Heoi2013]钙铁锌硒维生素
- 感性认识spring的IoC
- 2021-08-08 WPF控件专题 WrapPanel 控件详解
- idea中git更新代码到本地之后自己写的代码不见了
- mysql分组并查询最新记录信息(亲测有效)
- PMP备考错题集-作业习题二
- java调用R语言传参数时,RserveException: eval failed Syntax error
- LaTeX中的宽度单位em,ex,px,pt
热门文章
- javascript中replace()
- Don't be afraid. You are stronger than you think.
- 黑马程序员 Python学习笔记之 变量的命名
- Atitit 在线支付系统功能设计原理与解决方案 与目录
- Atitit.软件GUI按钮与仪表盘(01)--报警系统--
- paip.输入法编程----一级汉字1000个
- paip.脚本操作IIS启动停止站点
- paip. JAVA快速开发IDE与JSF技术
- 六种数据格式CSV、 Pickle、MessagePack、HDF5、Feather、 Parquet的比较
- 基金01、03文件,92、94文件、52、53、59等文件是指什么