紧接上一篇博文,本篇介绍RxJava,一个实现异步操作的库

RxJava最核心的两个东西是Observables和Subscribers

1.Observables(被观察者,事件源)发出一系列事件

2.Subscribers(观察者)处理这些事件

这里的事件可以是任何你感兴趣的东西(触摸事件,web接口调用返回的数据等等)

一个Observable可以发出零个或者多个事件,知道结束或者出错。

每发出一个事件,就会调用它的Subscriber的onNext方法,最后调用Subscriber.onNext()或者Subscriber.onError()结束。

Rxjava的看起来很想设计模式中的观察者模式,但是有一点明显不同,那就是如果一个Observerble没有任何的的Subscriber,那么这个Observable是不会发出任何事件的。

eg.一个用RxJava来打印Hello World的程序

1.创建一个Observable:调用Observable.create

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相关推荐

  1. Android学习笔记:Android基础知识点(不断更新中)

    1.Android学习笔记:OkHttp 2.Android学习笔记:更新UI的方法(UI线程和非UI线程) 3.Android学习笔记:Volley 4.Android学习笔记:Handler 5. ...

  2. Android学习笔记21:ImageView获取网络图片

    Android平台有3种网络接口可以使用,它们分别是:java.net.*(标准java接口).org.apache(Apache接口)和android.net.*(Android网络接口).本文将使 ...

  3. Android学习笔记(七):多个Activity和Intent

    根据www.mars-droid.com:Andriod开发视频教学,先跳过书本<Beginning Android 2>的几个章,我是这两个资源一起看,需要进行一下同步.先初步了解一下应 ...

  4. Android学习笔记26:图片切换控件ImageSwitcher的使用

    在Windows操作系统中,要查看多张图片,可以通过使用"Windows照片查看器"在"上一张"和"下一张"之间切换,进行多张图片的浏览. ...

  5. Android学习笔记36:使用SQLite方式存储数据

    在Android中一共提供了5种数据存储方式,分别为: (1)Files:通过FileInputStream和FileOutputStream对文件进行操作.具体使用方法可以参阅博文<Andro ...

  6. Pro Android学习笔记(二九):用户界面和控制(17):include和merge

    xml控件代码重用:include 如果我们定义一个控件,需要在不同的layout中重复使用,或者在同一个layout中重复使用,可以采用include的方式.例如定义my_button.xml如下 ...

  7. Android学习笔记:TabHost 和 FragmentTabHost

    2019独角兽企业重金招聘Python工程师标准>>> Android学习笔记:TabHost 和 FragmentTabHostTabHost命名空间:android.widget ...

  8. 【转】 Pro Android学习笔记(二九):用户界面和控制(17):include和merge

    目录(?)[-] xml控件代码重用include xml控件代码重用merge 横屏和竖屏landsacpe portrait xml控件代码重用:include 如果我们定义一个控件,需要在不同的 ...

  9. Android学习笔记:TabHost 和 FragmentTabHost(转)

    Android学习笔记:TabHost 和 FragmentTabHost(转) 转自:http://www.cnblogs.com/asion/p/3339313.html 作者:Asion Tan ...

  10. Pro Android学习笔记(三三):Menu(4):Alternative菜单

    什么是Alternative menu(替代菜单) 举个例子,Activity显示一个文本文件.如果用户想对文本文件进行编辑,Activity不提供编辑能力,但可由其他activity或者其他应用提供 ...

最新文章

  1. Codeforces.1051F.The Shortest Statement(最短路Dijkstra)
  2. 送一款巧克力式绝美键盘!真香!
  3. 叶杰平:主流强化学习过分简化假设,与真实场景差距较大
  4. paip. 提升性能---hibernate的缓存使用 总结
  5. THE QUESTIONS :The Top 25 (what we don't know?)
  6. python 程序运行插件_如何使Python插件在Pluma中运行?
  7. NeurIPS 2021 | 通过寻找平坦最小值,克服小样本增量学习中的灾难性遗忘
  8. 屌丝笔记本玩Windows Phone 8开发(在Windows Server 2012中安装WP8 SDK)
  9. 黑客走开系列1:Python使用元组做函数实参让代码更安全!
  10. 三星 android 截屏,三星S7怎么截屏 3种三星S7截图方法
  11. sv队列和动态数组的区别_systemverilog中几种数组类型的基础知识
  12. 一张图学会python应用到excel-Python | 编写一个简单的Excel处理脚本
  13. OpenGL超级宝典(第7版)笔记9 基元装配 裁剪 光栅化
  14. Silverlight4_Tools安装异常
  15. 高通骁龙888开始被Linux内核5.12版正式支持
  16. 提前祝福你和你和家人国庆节快乐,旅途愉快!
  17. 来局昆特牌吗?(模拟+策略优化)
  18. 解释源代码文件、目标代码文件和可执行文件之间的区别
  19. 欧文分校的计算机科学博士,加州大学欧文分校计算机科学硕士排名第37(2020年TFE Times排名)...
  20. Slow down:快时尚自救计划

热门文章

  1. windows系统coursera视频播放出错解决方法
  2. Struts2+Datagrid表格显示(可显示多表内容)
  3. 《Python开发 - Python杂记》Python与C/C++混合编程
  4. 【博学谷学习记录】超强总结,用心分享|【探花交友】FastDFS
  5. 猿创征文|Google Earth Engine(GEE)实现土地利用数据栅格转矢量
  6. 数据集WordNet-WN18
  7. 11微服务认证与授权
  8. 《游戏脚本的设计与开发》-(RPG部分)3.1 RPG地图到底怎么做?
  9. 《Web应用开发》(头歌)
  10. git 远程仓库相关命令