Android RxJava小结
一、如何使用
在build.gradle中添加依赖
dependencies {
api 'io.reactivex:rxandroid:1.2.1'
api 'io.reactivex:rxjava:1.3.0'
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:27.1.1'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
这里有一个小坑,直接用latest.release没有办法用,不知道为什么
二、代码实现
2.1 使用just+Action1+Action0来实现
Observable.just(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
.subscribeOn(Schedulers.io()) // Observable运行的线程
.observeOn(AndroidSchedulers.mainThread()) //监听者运行的线程
.subscribe(new Action1<Integer>() {
//onNext
@Override
public void call(Integer integer) {
log("call 1:" + integer);
}
}, new Action1<Throwable>() {
//onError
@Override
public void call(Throwable throwable) {
log("call 2");
}
}, new Action0() {
//onCompleted
@Override
public void call() {
log("call 3");
}
});
运行结果如下,很简单,就不一一解释了。
10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:1
10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:2
10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:3
10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:4
10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:5
10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:6
10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:7
10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:8
10-05 11:05:45.956 23619 23619 E MainActivity: yanlog msg:call 1:9
10-05 11:05:45.956 23619 23619 E MainActivity: yanlog msg:call 1:10
10-05 11:05:45.956 23619 23619 E MainActivity: yanlog msg:call 3
2.2 使用Just+Subscriber来实现
代码如下:
Observable.just(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
.subscribeOn(Schedulers.io()) // Observable运行的线程
.observeOn(AndroidSchedulers.mainThread()) //监听者运行的线程
.subscribe(new Subscriber<Integer>() {
@Override
public void onCompleted() {
log("onCompleted");
} @Override
public void onError(Throwable e) {
log("onError");
} @Override
public void onNext(Integer integer) {
log("onNext:" + integer);
}
});
运行结果如下:
10-05 19:56:09.991 982 982 E MainActivity: yanlog msg:onNext:1
10-05 19:56:09.991 982 982 E MainActivity: yanlog msg:onNext:2
10-05 19:56:09.991 982 982 E MainActivity: yanlog msg:onNext:3
10-05 19:56:09.992 982 982 E MainActivity: yanlog msg:onNext:4
10-05 19:56:09.992 982 982 E MainActivity: yanlog msg:onNext:5
10-05 19:56:09.992 982 982 E MainActivity: yanlog msg:onNext:6
10-05 19:56:09.992 982 982 E MainActivity: yanlog msg:onNext:7
10-05 19:56:09.992 982 982 E MainActivity: yanlog msg:onNext:8
10-05 19:56:09.992 982 982 E MainActivity: yanlog msg:onNext:9
10-05 19:56:09.992 982 982 E MainActivity: yanlog msg:onNext:10
10-05 19:56:09.992 982 982 E MainActivity: yanlog msg:onCompleted
Android RxJava小结的更多相关文章
- Android RxJava 2 的用法 just 、from、map、subscribe、flatmap、Flowable、Function、Consumer ...【转】
先简单说说RxJava的用途与价值 原文出处:Android RxJava 2 的用法 用途: 异步 (也就是开线程跳转) 价值: 面对复杂的逻辑,它依然 简洁 ,代码 易读 RxJava2 与 Rx ...
- android基础小结
(注:此小结文档在全屏模式下观看效果最佳) 2016年3月1日,正式开始了我的android学习之路. 最最开始的,当然是学习怎样搭载环境了,然而苦逼的我在win10各种坑爹的指引下还是安装了一个星期 ...
- 深入Android RxJava 2
这篇文章是根据Jake Wharton在GOTO CopenHagen 2016上的讲话整理的. 下一个版本(2.0)的RxJava还在开发中.虽然observable.订阅管理和背压(backpre ...
- Android RxJava
GitHut 地址: https://github.com/ReactiveX/RxAndroid build.gradle: compile 'io.reactivex:rxandroid:1.2. ...
- Android RxJava+Retrofit完美封装
作者简介 本篇来自 小河马 的投稿,分享了自己是如何进行 RxJava+Retrofit 的封装.本文的技术点自然没话说,另外对于这种模块化的思路,希望能帮助到大家.最后提前祝大家周末愉快以及圣诞快乐 ...
- android 知识小结-1
Java哪些数据结构是线程安全的,CurrentHashMap的原理 ConcurrentHashMap.ConcurrentSkipListMap.ConcurrentSkipListSet.Con ...
- Android技巧小结之新旧版本Notification
最近开发用到了通知功能,但有几个地方老是提示deprecated,然后就找了篇文章学习了下新旧版本的不同. Notification即通知,用于在通知栏显示提示信息. 在较新的版本中(API leve ...
- Android RxJava/RxAndroid结合Retrofit使用
概述 RxJava是一个在 Java VM 上使用可观測的序列来组成异步的.基于事件的程序的库.更重要的是:使用RxJava在代码逻辑上会非常简洁明了,尤其是在复杂的逻辑上.告别迷之缩进. RxAnd ...
- Android - Rxjava 使用和原理
用RxJava写的一个Android的小Demo 我所理解的RxJava——上手其实很简单 http://www.jianshu.com/p/5e93c9101dc5
随机推荐
- ewasm项目初探
为了改进EVM1.0,以太坊的新一代虚拟机项目ewasm (github.com/ewasm)将支持WebAssembly(wasm),wasm在性能,扩展性,开发工具,社区都更有优势.除以太坊外,一 ...
- 【opencv】opencv在图片、视频嵌中英文字符的方法
转自:http://www.cnblogs.com/hujingshuang/p/5119015.html 说明:本博文是根据前人已有的成果并结合自己的理解而成的.为了避免让读者感到繁琐,我将运用小学 ...
- codeforces 672A A. Summer Camp(水题)
题目链接: A. Summer Camp time limit per test 1 second memory limit per test 256 megabytes input standard ...
- I.MX6 system.img unpack repack
/************************************************************************* * I.MX6 system.img unpack ...
- [BZOJ 3697] 采药人的路径
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=3697 [算法] 首先 , 将黑色的边变成1 ,白色的边变成-1 那么 , 问题就转化 ...
- 【CAIOJ1177】 子串是否出现
[题目链接] 点击打开链接 [算法] KMP [代码] #include<bits/stdc++.h> using namespace std; #define MAXA 1000010 ...
- oracle报ORA-00911:invalid character
转自:http://www.cnblogs.com/chuang-sharing/p/9493316.html 今天查问题的时候,发现一个在分号后边加注释,解析错误的问题: select decode ...
- 036--MySQL扩展
一.视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT * FROM ( S ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 09. Model验证
数据注解 这样前后就会有div把这个inoput给包起来 添加一个Label使用TagHelper也有只能提示 出现的效果是这样的,实际上是把model的属性名打印出来.了. 把其他几个label也添 ...
- UVaLive 7454 Parentheses (水题,贪心)
题意:给定一个括号序列,改最少的括号,使得所有的括号匹配. 析:贪心,从左到右扫一下,然后统计一下左括号和右括号的数量,然后在统计中,如果有多了的右括号,那么就改成左括号,最后如果两括号数量不相等, ...