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
随机推荐
- 织梦CMS使用JS实时动态调用评论数
网站中只要启用了会员系统,网站中的文章就会有评论,在网站首页中调用会员评论也能提升会员体验度,网页都是静态页面,如果每有一个评论都更新html的话就会有点浪费资源了,所以这里给大家分享一个使用JS调用 ...
- MySQL的IFNULL简单使用说明
MySQL IFNULL函数简介 MySQL IFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数. 否则,IFNULL函数返回第二个参数. 两个参数可以是文 ...
- UIButton常见属性和方法
一.创建,两种方法: 1. 常规的 initWithFrame UIButton *btn1 = [[UIButton alloc]initWithFrame:CGRectMake(10, 10, 8 ...
- Dijkstra堆优化
Dijkstra是一个非常不错的最短路算法,它使用两层循环进行枚举,通过每次更新蓝白点的方式更新最短路,时间复杂度为O(n^2),优于floyd的O(n^3),不过只能用于计算单源最短路,而且无法处理 ...
- 小K的农场(差分约束)
题目大意 n个点 m条描述 农场 a 比农场 b 至少多种植了 c 个单位的作物. 农场 a 比农场 b 至多多种植了 c 个单位的作物. 农场 a 与农场 b 种植的作物数一样多. 题解 差分约束裸 ...
- Babel转码器
Babel是一个广泛使用的ES6转码器,可以将ES6代码转为ES5代码,从而在现有环境执行.这意味着,你可以用ES6的方法 编写程序,又不用担心现在环境是否支持.
- asp.net MVC 单选按钮的使用
单选按钮的标准的html 语法 <form><input type="radio" name="sex" value="male&q ...
- Centos添加jdk环境变量
假设将jdk解压到/opt/jdk1.8.0_131. echo "export JAVA_HOME=/opt/jdk1.8.0_131" >> /etc/profil ...
- linux的僵尸进程和孤儿进程
1 僵尸进程: 子进程已经退出勒 但是还没有回收资源的进程为僵尸进程 代码验证 #include <stdio.h> #include <stdlib.h> #include ...
- bzoj 2780: [Spoj]8093 Sevenk Love Oimaster【广义SAM】
AC自动机比较简单,把询问串做成AC自动机然后模板串边跑变更新即可 SAM是把模板串做成广义SAM,然后每个节点存有几个模板串经过,具体方法是每次更新暴力向上跳直到有时间戳我不会证为什么时间复杂度是对 ...