分类: 作者同类文章X版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
前言什么是RxAndroidRxAndroid能解决什么问题如何通俗地理解RxAndroidRxAndroid的简单实现我目前还在边学别写,极有可能出现很多理解不到位而闹的笑话,请留言指正。 我学习的链接就是gank.io上扔物线大哥的给 Android 开发者的 Rxjava 详解
前言什么是RxAndroidRxAndroid能解决什么问题如何通俗地理解RxAndroidRxAndroid的简单实现要说RxAndroid还得先说RxJava,大家可以从这2个词看出来Rx是相同的前缀,毕竟只是Android就是Java语言。那为何又有点区别呢?目前就我看到的章节只知道android有自己独特的调度:MainThreadScheduler(因为android是必须强制在Main线程执行UI操作,复杂的操作要在WorkThread中执行(android api多少+来着?懒的查了))。
屁话说了一堆,那到底什么是RxJava?其实就是一个用来解决异步的框架而已。
同上,解决异步问题。那你会说了,异步在android中有AsyncTask、Handler等机制,需要这个有什么用? 简单来说:以更优雅(更直观、更不烧脑)的方式来写异步。这在复杂的异步程序中用更简单的方式来实现是尤为重要的。如果说你还没有过复杂的异步把自己给绕晕的经历,那只能说你是才入门或者是超凡大师了。
它其实就是观察者模式的实现。观察者模式无非就是观察者与被观察着之间发生的那点儿事。
举个生活中的小例子来描述一下:
老师与学生的关系 我这里将老师比喻为被观察者,学生比喻为观察者。设想一个这样的场景:老师在给学生们上课,老师会先让学生打开课本,然后老师噼里啪啦的讲一通,最后老师喊下课! 老师所做的所有动作都是被学生们看在眼里、听在耳里、记在脑子里的,所以假设是学生们一直在观察老师的所有动作,这么就理解了老师是被学生观察的对象,那老师就是被观察者,学生就是观察者。理解了如上过程,我们再想一下:
老师如果说了句“打开第XX页”,那么学生是否就按老师说的做了?老师如果在黑板上写下了XX结论或答案,那么学生是否就有可能记在课本或其他笔记中了?老师如果一不小心滑倒了,那么是否有学生就会笑出声来?其实这些动作都是老师做出来后,学生根据老师的表现或者指令来完成相应的动作?当然,学生们也可能对老师的某个表现不感兴趣,直接不理睬。
悄悄告诉你:android中为某个按钮设定了onClick等监听事件其实就是观察者模式。按钮就是被观察者,onClickListener就是观察者。当按钮发出点击事件时,onClickListener就会执行对应的动作。
1234567891011121314151617181920212223242526272829303132333435Observable (被观察者)的创建Observable observable = Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext("上课!"); subscriber.onNext("打开课本第19页"); subscriber.onNext("今天的课后作业是……"); subscriber.onCompleted();//这个是下课的指令 }});123456789
123456789Subscribe (订阅) 订阅其实就是建立关系。 我们创建了“学生”与“老师”,但他们还互相不认识呢,谁知道那么多老师哪个上我们的课啊? 这样:observable.subscribe(observer);// 或者:observable.subscribe(subscriber);123
123为什么不是学生订阅了老师?其实是为了流式的写法而已。你可以理解成老师订阅了学生,也就是被观察者订阅了观察者。
这就是RxAndroid!至少大家可以知道RxAndroid是个什么玩意儿了,不会像第一次听别人说的时候认为是什么什么高深莫测的东西了。有点晚了,先写到这。。。写博客真的很耗时间,先对各位博客大神作个揖!
顶 2 踩 0 上一篇[官翻] 隐藏状态栏新闻热点
疑难解答