java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(1)

CaptainAndroid.png

写了一个工程,大概分六个demo.java带你学习如何使用,通熟易懂,很明显,是我这个菜鸟写的。

RxJava是什么?

RxJava 在 GitHub 主页上的自我介绍是 "a library for composing asynchronous and event-based programs using observable sequences for the Java VM"(一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库)。这就是 RxJava。

简单的来说, RxJava 的本质可以压缩为异步这一个词。说到根上,它就是一个实现异步操作的库,而别的定语都是基于这之上的。

RxJava的好处

简洁、美观

异步操作很关键的一点是程序的简洁性,因为在调度过程比较复杂的情况下,异步代码经常会既难写也难被读懂。 Android 的framework为我们创造的 AsyncTask 和Handler ,其实都是为了让异步代码更加简洁。RxJava 的优势也是简洁,但它的简洁的与众不同之处在于,随着程序逻辑变得越来越复杂,它依然能够保持简洁。

rxjava1.jpg

使用

通过阅读以下代码链接,会一步一步的知道RxJava是如何使用的。

个人建议把我工程拉下来看,直接运行看log比较有感觉。

工程链接:https://github.com/Jerey-Jobs/RxJavaDemos

  • 第一章:数据的发射与接收

    第一章代码:数据的发射与接收

    通过创建observable与observer

    再通过 observable.subscribe(observer); 进行数据发布,实现简单的订阅关系。

    具体见代码。

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(2)

/**

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(3)

  • 第二章:通过filter 控制筛选 通过map转换格式

    第二章代码:通过filter 控制筛选 通过map转换格式

    通过Observable.just(1, 2, 3, 4, 5),然后使用.filter进行数据筛选 .map进行数据的格式转换的demo。

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(4)

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(5)

  • 第三章:Scheduler 线程控制

    第三章代码:Scheduler 线程控制

    *

  • Schedulers.immediate(): 直接在当前线程运行,相当于不指定线程。这是默认的 Scheduler。

  • Schedulers.newThread(): 总是启用新线程,并在新线程执行操作。

  • Schedulers.io(): I/O 操作(读写文件、读写数据库、网络信息交互等)所使用的 Scheduler

  • 行为模式和 newThread() 差不多,区别在于 io() 的内部实现是是用一个无数量上限的线程池,可以重用空闲的线程,因此多数情况下 io() 比 newThread() 更有效率。不要把计算工作放在 io() 中,可以避免创建不必要的线程。

  • Schedulers.computation(): 计算所使用的 Scheduler。这个计算指的是 CPU 密集型计算,即不会被 I/O 等操作限制性能的操作,例如图形的计算。这个 Scheduler 使用的固定的线程池,大小为 CPU 核数。不要把 I/O 操作放在 computation() 中,否则 I/O 操作的等待时间会浪费 CPU。

  • 另外, Android 还有一个专用的 AndroidSchedulers.mainThread(),它指定的操作将在 Android 主线程运行。

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(6)

/**

public class Demo3 { public static final String TAG = "Demo3"; public static void test() {

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(7)

第四章:学会使用lift转变类型

  • 第四章代码:学会使用lift转变类型

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(8)

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(9)

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(10)

  • 第五章:学会使用Observable.Transformer 改变自身属性

第五章代码:学会使用Observable.Transformer 改变自身属性

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(11)

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(12)

Observable.Transformer<Integer, String> transformer = new Observable.Transformer<Integer, String>() { @Override

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(13)

  • 第六章:学会简单使用Retrofit

第六章代码:学会使用Retrofit

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(14)

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(15)

@Override

java 的optional api 介绍和实战(一个工程带你学会简单使用RxJava)(16)

/**


了解更多网络安全动态、干货、热点资讯,请关注微信公众号“e安在线”!


本文作者:Anderson/Jerey_Jobs

简书地址 : Anderson大码渣

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页