android学习笔记(2)--RxJava
紧接上一篇博文,本篇介绍RxJava,一个实现异步操作的库。
RxJava最核心的两个东西是Observables和Subscribers
1.Observables(被观察者,事件源)发出一系列事件
2.Subscribers(观察者)处理这些事件
这里的事件可以是任何你感兴趣的东西(触摸事件,web接口调用返回的数据等等)
一个Observable可以发出零个或者多个事件,知道结束或者出错。
每发出一个事件,就会调用它的Subscriber的onNext方法,最后调用Subscriber.onNext()或者Subscriber.onError()结束。
Rxjava的看起来很想设计模式中的观察者模式,但是有一点明显不同,那就是如果一个Observerble没有任何的的Subscriber,那么这个Observable是不会发出任何事件的。
eg.一个用RxJava来打印Hello World的程序
Observable<String> myObservable = Observable.create( new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> sub) { sub.onNext("Hello, world!"); sub.onCompleted(); } } );
也可以用简化版本:
Observable<String> myObservable = Observable.just("Hello, world!")
这里定义的Observable对象仅仅发出一个Hello World字符串,然后就结束。
2.创建Subscriber,用于处理Observable对象发出的字符串。
Subscriber<String> mySubscriber = new Subscriber<String>() { @Override public void onNext(String s) { System.out.println(s); } @Override public void onCompleted() { } @Override public void onError(Throwable e) { } };
简化版本:
Action1<String> onNextAction = new Action1<String>() { @Override public void call(String s) { System.out.println(s); } };
subscriber仅仅就是打印observable发出的字符串。
3.subscribe函数将myObservable对象和mySubscriber对象关联。完成了subscriber对observable的订阅。
myObservable.subscribe(mySubscriber);
如果之前用的Action1的类,那么用下面的方法订阅:
myObservable.subscribe(onNextAction);
合成之前的简洁版本,可以这样写:
Observable.just("Hello, world!") .subscribe(new Action1<String>() { @Override public void call(String s) { System.out.println(s); } });
4.完成。现在mySubscriber订阅了myObservable,myObservable就是调用mySubscriber对象的onNext和onComplete方法,mySubscriber就会打印出Hello World!
以上是简单的RxJava的用法,下面来看一下MovieGuide中是如何使用RxJava:
在MovieGuide中,RxJava主要在迭代器类中使用
//todo
转载于:https://www.cnblogs.com/summerxt/p/6065192.html
android学习笔记(2)--RxJava相关推荐
- Android学习笔记:Android基础知识点(不断更新中)
1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...
- Android学习笔记21:ImageView获取网络图片
Android平台有3种网络接口可以使用,它们分别是:java.net.*(标准java接口).org.apache(Apache接口)和android.net.*(Android网络接口).本文将使 ...
- Android学习笔记(七):多个Activity和Intent
根据www.mars-droid.com:Andriod开发视频教学,先跳过书本<Beginning Android 2>的几个章,我是这两个资源一起看,需要进行一下同步.先初步了解一下应 ...
- Android学习笔记26:图片切换控件ImageSwitcher的使用
在Windows操作系统中,要查看多张图片,可以通过使用"Windows照片查看器"在"上一张"和"下一张"之间切换,进行多张图片的浏览. ...
- Android学习笔记36:使用SQLite方式存储数据
在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...
- Pro Android学习笔记(二九):用户界面和控制(17):include和merge
xml控件代码重用:include 如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式.例如定义my_button.xml如下 ...
- Android学习笔记:TabHost 和 FragmentTabHost
2019独角兽企业重金招聘Python工程师标准>>> Android学习笔记:TabHost 和 FragmentTabHostTabHost命名空间:android.widget ...
- 【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge
目录(?)[-] xml控件代码重用include xml控件代码重用merge 横屏和竖屏landsacpe portrait xml控件代码重用:include 如果我们定义一个控件,需要在不同的 ...
- Android学习笔记:TabHost 和 FragmentTabHost(转)
Android学习笔记:TabHost 和 FragmentTabHost(转) 转自:http://www.cnblogs.com/asion/p/3339313.html 作者:Asion Tan ...
- Pro Android学习笔记(三三):Menu(4):Alternative菜单
什么是Alternative menu(替代菜单) 举个例子,Activity显示一个文本文件.如果用户想对文本文件进行编辑,Activity不提供编辑能力,但可由其他activity或者其他应用提供 ...
最新文章
- Codeforces.1051F.The Shortest Statement(最短路Dijkstra)
- 送一款巧克力式绝美键盘!真香!
- 叶杰平:主流强化学习过分简化假设,与真实场景差距较大
- paip. 提升性能---hibernate的缓存使用 总结
- THE QUESTIONS :The Top 25 (what we don't know?)
- python 程序运行插件_如何使Python插件在Pluma中运行?
- NeurIPS 2021 | 通过寻找平坦最小值,克服小样本增量学习中的灾难性遗忘
- 屌丝笔记本玩Windows Phone 8开发(在Windows Server 2012中安装WP8 SDK)
- 黑客走开系列1:Python使用元组做函数实参让代码更安全!
- 三星 android 截屏,三星S7怎么截屏 3种三星S7截图方法
- sv队列和动态数组的区别_systemverilog中几种数组类型的基础知识
- 一张图学会python应用到excel-Python | 编写一个简单的Excel处理脚本
- OpenGL超级宝典(第7版)笔记9 基元装配 裁剪 光栅化
- Silverlight4_Tools安装异常
- 高通骁龙888开始被Linux内核5.12版正式支持
- 提前祝福你和你和家人国庆节快乐,旅途愉快!
- 来局昆特牌吗?(模拟+策略优化)
- 解释源代码文件、目标代码文件和可执行文件之间的区别
- 欧文分校的计算机科学博士,加州大学欧文分校计算机科学硕士排名第37(2020年TFE Times排名)...
- Slow down:快时尚自救计划
热门文章
- windows系统coursera视频播放出错解决方法
- Struts2+Datagrid表格显示(可显示多表内容)
- 《Python开发 - Python杂记》Python与C/C++混合编程
- 【博学谷学习记录】超强总结,用心分享|【探花交友】FastDFS
- 猿创征文|Google Earth Engine(GEE)实现土地利用数据栅格转矢量
- 数据集WordNet-WN18
- 11微服务认证与授权
- 《游戏脚本的设计与开发》-(RPG部分)3.1 RPG地图到底怎么做?
- 《Web应用开发》(头歌)
- git 远程仓库相关命令