Android RxJava Hello World
一、肤浅的认识
rxjava?(矇蔽)状态,只知道很多人在用以及研究。一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库(盗用一下翻译)(完全矇蔽)虽然翻译的很到位,但还是不懂(书到用时方恨少)。
到这里你以为我会放弃?!?to naive
虽然是一块难啃的骨头,但因为是第二次主动想去了解它,所以怎么都不可能放弃。既然书读的少,那就多读点, 于是我一口气把
给 Android 开发者的 RxJava 详解,深入浅出RxJava(一:基础篇),深入浅出RxJava(二:操作符),深入浅出RxJava三--响应式的好处,深入浅出RxJava四-在Android中使用响应式编程,Android应用架构之Retrofit使用,RxJava+Retrofit框架Demo(一) 都读完了(可以百度到),写的都相当好,颇有我的风范(太不要脸了,其实我想像他们一样,做第一个吃螃蟹的人,还能教会大家正确都吃法)。文章中对rxjava 的引入,原理,以及使用描述的大多都比较详细。通过这些文章能够让你关联到一些词,异步 观察者模式 观察者模式的解藕 事件流。但今天这篇文章他们一个我都不会说,如果这样的话会让我显得太没有套路了。
对于一个初学者,个人认为甜头是最重要的,大多数Android程序猿我想,不是一开始就去了解主线程的执行流程或者Handler什么的,应该大多数都是从UI开始的。因为他的效果最明显。因此今天这篇作为入门的文章,会先从最简单的应用开始。压根就不用管原理。让你尝尽甜头。这呢也是我学习rxjava吸取的经验。新的模式,也是我写这篇博客的原因。也希望能帮助更多人入门。
额,一不注意居然说了这么多闲话。下面开始步入正题。
肤浅认识:RxJava是一个可以完成异步任务(AsyncTask)功能的库,使用它能使代码逻辑更清晰(这句话包含了,它是是什么,有什么用,为什么使用,与异步任务(AsyncTask)的对比,能够帮助你更快的接受它,并且发现他的好处。这里的优点,说的很模糊,是因为我觉得,好处应该在后面的博客中通过实际应用来体现,只把它一一的列出来,毫无意义)
二、肤浅的使用
一个框架再六,设计再好,你再了解他的原理,如果不知道它的好,它用在哪,只能呵呵了。
1.一个肤浅的场景(异步请求数据)
这里是伪代码,想了解详情可看后面的demo(demo 只是为了方便大家更直观的看,绝不代表真实水平)
这种场景基本是每个联网项目都会遇到的。(你可以想十秒你是怎么解决的)通常我们的解决有使用异步任务,IntentService,甚至是Volley等框架。这里就先用最low的异步来实现doInBackground()方法中请求数据
onPostExecute()方法中去处理数据
在这里假设大家都会
具体可以在 github demo 中查看,demo 中的first对应这篇博客的代码,first中有一个Readme,阅读代码之前可以先看一下
这里先说一些个人的理解,希望对每一个读的人有帮助。耗时的操作通常放在call方法中。类似于doInBackground(),与界面交互的通常会放到onNext()中,类似于onPostExecute()。在这里你可以把它简单想成异步任务。这样对比能让你更快的接受它,当然他们区别是很大的,也会去了解到它的神奇之处。这些会放在后面的博客中。
好吧,也许你感觉出来了,他的代码比异步还多。看到这里你也许会嫌弃。因为我当时也是这样的感觉。于是我开始想是不是有其他情形是异步解决不了的。我有看了一些其他的应用例子,比如什么多次输出什么的,但发现这些用异步任务加一些循环也是可以做到的。它并没有什么神奇之处。然后我就各种谷歌它的好处。大概就是也是一下几点:
1.整个工程的出现的错误不会导致程序崩溃,并且都会调用onError方法,可以自行进行处理(异步虽然没有,但加也不难)
2.耗时操作可以放在非主线程(异步任务更熟悉)
3.代码规范。(好吧通过想,我真的没有感觉好多少)
三、肤浅的总结
单从这些局限的想法,真的感觉不出来,它的好,于是我决定同哟代码去feel,毕竟程序员还是不能忘记撸代码
花了半小时,边撸边想,写出来以后差别还挺大,之前太想当然了
1.异步任务通常不会会作为内部类,因此需要单独定义接口进行回调。首先定义接口会使结构变的乱一些,其次接口中方法,不同的人可能不同的定义,这样不利于整个项目的规范。
2.对于出错处理,也许你会想到try...catch,以及自定义的一些错误事件来处理。但这样使结构混乱不说,有很多意外时想都想不到的,尤其是服务器的数据。也许一个不小心程序就崩了。
3.代码规范,大多数的需求都可以通过调用相应的方法解决。大神已经可以写好方法,只管调用即可。不用每个人都定义自己的规则。这有利于程序的维护。在后面的文章中你会有更多感触。
hello world 到这里就结束了,后期我会继续更新博客,展现RxJava的强大之处。最后附上demo demo 中的first对应这篇博客的代码,first中有一个Readme,阅读代码之前可以先看一下
独学而无友,则孤陋而寡闻!!!
文章中有不恰当的地方希望大家能指出。有不解的地方也可以和我联系.
邮箱:onlybeyond99@gmail.com