RxJava 备注
RxJava是一个采用观察者模式的异步框架,本文给出几个基本的使用例子。
1、配置依赖:
compile 'io.reactivex:rxjava:1.0.14'
compile 'io.reactivex:rxandroid:1.0.1'
2、基础(发布、订阅):
observable = Observable.create(new Observable.OnSubscribe<String>() {
@Override
public void call(Subscriber<? super String> subscriber) {
subscriber.onNext("Step1");
subscriber.onNext("Step2");
subscriber.onNext("Step3");
subscriber.onCompleted();
}
}); subscriber = new Subscriber<String>() { @Override
public void onStart(){
System.out.println("onStart");
} @Override
public void onCompleted() {
System.out.println("onCompleted");
} @Override
public void onError(Throwable e) {
System.out.println("onError");
}
@Override
public void onNext(String s) {
System.out.println("onNext"+s);
}
}; FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
observable.subscribe(subscriber);
}
});
3、采用action的写法
Action1<String> onNextAction = new Action1<String>() { @Override
public void call(String s) {
System.out.println("onNextAction" + s);
}
}; Action1<Throwable> onErrorAction = new Action1<Throwable>() { @Override
public void call(Throwable throwable) {
System.out.println("onErrorAction");
}
}; Action0 onCompletedAction = new Action0() { @Override
public void call() {
System.out.println("onCompletedAction");
}
}; //from表示从一个数组中取参数
Observable.just("Step1","Step2")
.subscribe(onNextAction,onErrorAction,onCompletedAction);
4、Schedule接口
//Schedulers.immediate():默认值,当前线程
//Schedulers.computation():用以CPU密集型任务,固定线程池
//Schedulers.io():IO操作,不固定线程池
//Schedulers.newThread()://新线程
Observable.just("Step1","Step2")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread()) //主线程
.subscribe(onNextAction, onErrorAction, onCompletedAction);
5、参数映射
List<String> input = new ArrayList<String>();
input.add("hello ");
input.add("world"); Observable.just(input)
.map(new Func1<List<String>, String>() {
@Override
public String call(List<String> input) { StringBuffer buffer = new StringBuffer(); for (String item : input) {
buffer.append(item);
} return buffer.toString();
}
})
.subscribe(new Action1<String>() {
@Override
public void call(String str) {
System.out.println(str);
}
});
RxJava 备注的更多相关文章
- retrofit+RXjava二次封装
接入说明:项目中已集成RXjava,RXandroid.Retrofit,为避免包冲突,不须要再次接入. 就可以直接使用RXjava,Retrofit的所有api. github地址:https:// ...
- 关于RxJava背压
http://flyou.ren/2017/04/05/%E5%85%B3%E4%BA%8ERxJava%E8%83%8C%E5%8E%8B/?utm_source=tuicool&utm_m ...
- 体验RxJava
RxJava是 ReactiveX在 Java上的开源的实现,简单概括,它就是一个实现异步操作的库,使用时最直观的感受就是在使用一个观察者模式的框架来完成我们的业务需求: 其实java已经有了现成的观 ...
- 使用Spring Boot和RxJava的构建响应式REST API
我不打算解释什么是响应式编程,也不解释为什么要使用它.我希望你已经在其他地方了解过,如果没有,你可以使用Google去搜索它.在本文中,我将告诉您如何使用专门针对Spring Boot和RxJava的 ...
- Android性能优化之利用Rxlifecycle解决RxJava内存泄漏
前言: 其实RxJava引起的内存泄漏是我无意中发现了,本来是想了解Retrofit与RxJava相结合中是如何通过适配器模式解决的,结果却发现了RxJava是会引起内存泄漏的,所有想着查找一下资料学 ...
- Android消息传递之基于RxJava实现一个EventBus - RxBus
前言: 上篇文章学习了Android事件总线管理开源框架EventBus,EventBus的出现大大降低了开发成本以及开发难度,今天我们就利用目前大红大紫的RxJava来实现一下类似EventBus事 ...
- 【知识必备】RxJava+Retrofit二次封装最佳结合体验,打造懒人封装框架~
一.写在前面 相信各位看官对retrofit和rxjava已经耳熟能详了,最近一直在学习retrofit+rxjava的各种封装姿势,也结合自己的理解,一步一步的做起来. 骚年,如果你还没有掌握ret ...
- Android MVP+Retrofit+RxJava实践小结
关于MVP.Retrofit.RxJava,之前已经分别做了分享,如果您还没有阅读过,可以猛戳: 1.Android MVP 实例 2.Android Retrofit 2.0使用 3.RxJava ...
- 【腾讯Bugly干货分享】基于RxJava的一种MVP实现
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57bfef673c1174283d60bac0 Dev Club 是一个交流移动 ...
随机推荐
- C++ 系列:编译 boost
Copyright © 1900-2016, NORYES, All Rights Reserved. http://www.cnblogs.com/noryes/ 欢迎转载,请保留此版权声明. -- ...
- Normalization
In creating a database, normalization is the process of organizing it into tables in such a way that ...
- Laravel5路由/home页面无法访问
报错信息: Not Found The requested URL /laravel5/public/home was not found on this server. 解决方法: 1.编辑apac ...
- STL插入删除和查询测试
博客园的markdown不知道怎么插入C++代码,只好放弃了..本文在我的blog发布:http://jwk000.github.io/2015/09/02/20150902/
- Vue - 内部指令
1.插值 A:<span>TEXT:{{text}}</span> {{text}}会被相应的数据类型text属性值替换,当text值改变时候,文本中的值也会相应的发生变化 B ...
- iOS之转场动画
CodeApp地址CATransition_Demo:https://github.com/Wheat-Qin/CATransition_Demo iOS中比较全的翻转过渡动画(不只是苹果提供的).包 ...
- 通用js函数集锦<来源于网络/自己> 【一】
通用js函数集锦<来源于网络/自己>[一] 1.返回一个全地址2.cookie3.验证用户浏览器是否是微信浏览器4.验证用户浏览器是否是微博内置浏览器5.query string6.验证用 ...
- 【转】查询oracle比较慢的session和sql
-查询最慢的sql select * from ( select parsing_user_id,executions,sorts command_type,disk_reads,sql_text f ...
- 蜻蜓FM笔试题目,求两个点的最近父节点
这个博客写的特别好. http://blog.csdn.net/kangroger/article/details/40392925
- Dictionary Learning(字典学习、稀疏表示以及其他)
第一部分 字典学习以及稀疏表示的概要 字典学习(Dictionary Learning)和稀疏表示(Sparse Representation)在学术界的正式称谓应该是稀疏字典学习(Sparse Di ...