王学岗RxJava(一)
来源:互联网 发布:网络打印机经常脱机 编辑:程序博客网 时间:2024/06/06 16:36
1,什么是响应式编程
响应式编程,是一种基于异步数据流概念的编程模式;数据流像河流一样可以被观测、过滤,操作!
2,Java里面提供了解决方案–RxJava,Reactive Extension Java
3,RxJava整体架构设计,我在这里推荐两篇篇文章介绍其架构设计的,写的很棒!
一: http://www.devtf.cn/?tag=rxjava
二:http://gank.io/post/560e15be2dca930e00da1083
第一篇文章让人蛋疼的是作者采用了很多JDK1.8新特性,大家学习前可以先看看1.8新特性。
整体上看架构设计是观察者模式,除此外,还用到了代理模式,迭代器,Builder模式;
4, RxJava框架的角色划分
Observable(被观察者)
Observer(观察者)
Subscriber:订阅
Subjects:科目
我们通过微信这个例子来理解下这四个角色:
微信公众号:
Observable:微信公众号服务器
Observer:具体用户
Subjects:科目(企业号、服务号、订阅号)
Subscriber:桥梁,又比如手机是异地通话的桥梁
5 Action是没有返回值的回调接口 而Function是有返回值的回调接口
package com.tz.architect.rxjava.simple.android.simple2;import rx.Observable;import rx.Observer;import rx.Subscriber;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import com.tz.architect.rxjava.simple.android.R;public class RxJavaSimple2 extends Activity { private Observable<String> observableString; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_simple2); // 创建一个被观察者 // 配置回调接口---OnSubscribe // 为什么要配置? // 监听观察者订阅,一旦有观察者订阅了,立马回调改接口 observableString = Observable .create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> observer) { Log.i("main", "回到了"); // 所以在这个方法里面我们可以干一些事情 // 进行数据通信(说白了就是通知观察者) for (int i = 0; i < 5; i++) { observer.onNext("第" + i + "个数据"); } // 当我们的数据传递完成 observer.onCompleted(); } }); } public void click(View v) { // 观察者订阅 // 回调原理: // 核心代码: // hook.onSubscribeStart(observable, // observable.onSubscribe).call(subscriber); observableString.subscribe(new Observer<String>() { @Override public void onCompleted() { Log.i("main", "---onCompleted---"); } @Override public void onError(Throwable e) { System.out.println("Oh,no! Something wrong happened!"); } @Override public void onNext(String item) { // 接受数据 Log.i("main", "观察者接收到了数据: " + item); } }); }}
0 0
- 王学岗RxJava(一)
- RxJava教程(一)
- Rxjava要素(一)
- Rxjava源码(一)
- RxJava使用(一)
- RxJava 初探(一)
- RxJava 学习(一)
- RxJava从零开始(一)
- RxJava学习(一)
- RXjava学习(一)
- RxJava入门(一)
- RxJava上手(一)
- Rxjava详解(一)
- Rxjava学习(一)
- RxJava 2.0(一)
- RxJava学习(一),RxJava初识
- rxjava系列(一)-- 初识Rxjava
- Rxjava(一):与Rxjava初相识
- Java集合Map接口与Map.Entry学习
- hive调优
- 【HDU 1846 】+ 巴什博弈
- TextView实现滚动播放
- memcache数据缓存
- 王学岗RxJava(一)
- J-Chip Factory(2015ACM-ICPC长春站)
- [数据结构]查找(二)
- LeetCode 100. Same Tree 题解
- POJ 1276 Cash Machine
- 尝试将I/O流 用一张图来表示
- windbg设断点命令详解(bp, bu, bm, ba 以及bl, bc, bd, be)
- 关于ORB_SLAM2在Ubuntu16.04下编译出错的解决办法之一
- Android学习之 VideoView,SurfaceView 资源