Android RxJava小结

一、如何使用

在build.gradle中添加依赖

 1 dependencies {
 2     api ‘io.reactivex:rxandroid:1.2.1‘
 3     api ‘io.reactivex:rxjava:1.3.0‘
 4     implementation fileTree(include: [‘*.jar‘], dir: ‘libs‘)
 5     implementation ‘com.android.support:appcompat-v7:27.1.1‘
 6     implementation ‘com.android.support.constraint:constraint-layout:1.1.3‘
 7     testImplementation ‘junit:junit:4.12‘
 8     androidTestImplementation ‘com.android.support.test:runner:1.0.2‘
 9     androidTestImplementation ‘com.android.support.test.espresso:espresso-core:3.0.2‘
10 }

这里有一个小坑,直接用latest.release没有办法用,不知道为什么

二、代码实现

2.1 使用just+Action1+Action0来实现

 1  Observable.just(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
 2                     .subscribeOn(Schedulers.io()) // Observable运行的线程
 3                     .observeOn(AndroidSchedulers.mainThread()) //监听者运行的线程
 4                     .subscribe(new Action1<Integer>() {
 5                         //onNext
 6                         @Override
 7                         public void call(Integer integer) {
 8                             log("call 1:" + integer);
 9                         }
10                     }, new Action1<Throwable>() {
11                         //onError
12                         @Override
13                         public void call(Throwable throwable) {
14                             log("call 2");
15                         }
16                     }, new Action0() {
17                         //onCompleted
18                         @Override
19                         public void call() {
20                             log("call 3");
21                         }
22                     });

运行结果如下,很简单,就不一一解释了。

 1 10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:1
 2 10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:2
 3 10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:3
 4 10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:4
 5 10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:5
 6 10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:6
 7 10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:7
 8 10-05 11:05:45.955 23619 23619 E MainActivity: yanlog msg:call 1:8
 9 10-05 11:05:45.956 23619 23619 E MainActivity: yanlog msg:call 1:9
10 10-05 11:05:45.956 23619 23619 E MainActivity: yanlog msg:call 1:10
11 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);
                        }
                    });

运行结果如下:

 1 10-05 19:56:09.991   982   982 E MainActivity: yanlog msg:onNext:1
 2 10-05 19:56:09.991   982   982 E MainActivity: yanlog msg:onNext:2
 3 10-05 19:56:09.991   982   982 E MainActivity: yanlog msg:onNext:3
 4 10-05 19:56:09.992   982   982 E MainActivity: yanlog msg:onNext:4
 5 10-05 19:56:09.992   982   982 E MainActivity: yanlog msg:onNext:5
 6 10-05 19:56:09.992   982   982 E MainActivity: yanlog msg:onNext:6
 7 10-05 19:56:09.992   982   982 E MainActivity: yanlog msg:onNext:7
 8 10-05 19:56:09.992   982   982 E MainActivity: yanlog msg:onNext:8
 9 10-05 19:56:09.992   982   982 E MainActivity: yanlog msg:onNext:9
10 10-05 19:56:09.992   982   982 E MainActivity: yanlog msg:onNext:10
11 10-05 19:56:09.992   982   982 E MainActivity: yanlog msg:onCompleted

原文地址:https://www.cnblogs.com/yanyojun/p/9745675.html

时间: 2024-10-24 15:30:01

Android RxJava小结的相关文章

android fota小结

fota在make中有个关键的目标target-files-package,该目标生成一个用于做升级包的zip文件.升级包中的内容是定义好的文件列表. 同时有一个主要的脚本./build/tools/releasetools/ota_from_target_files,这个脚本可以根据不同的参数生成完整的升级包和差分升级包. 完整的升级包是采用覆盖的形式升级,差分升级则是采用patch的方式升级. 在update-binary中会有升级的函数定义,在update-script中会调用不同的函数进

Android RxJava 实战系列:联合判断

前言 Rxjava,由于其基于事件流的链式调用.逻辑简洁 & 使用简单的特点,深受各大 Android开发者的欢迎. 如果还不了解RxJava,请看文章:Android:这是一篇 清晰 & 易懂的Rxjava 入门教程 RxJava如此受欢迎的原因,在于其提供了丰富 & 功能强大的操作符,几乎能完成所有的功能需求 今天,我将为大家带来 Rxjava创建操作符的常见开发应用场景:联合判断需求 ,希望大家会喜欢. 本系列文章主要基于 Rxjava 2.0 接下来的时间,我将持续推出 A

Android RxJava操作符一览

前言 把现在接触到的操作符全部整理进来,方便查阅,遇到新的也会添加进来.和RxJavaLearn 的README.md同步更新. 操作符决策树 直接创建一个Observable(创建操作) 组合多个Observable(组合操作) 对Observable发射的数据执行变换操作(变换操作) 从Observable发射的数据中取特定的值(过滤操作) 转发Observable的部分值(条件/布尔/过滤操作) 对Observable发射的数据序列求值(算术/聚合操作) 创建操作 用于创建Observab

Android技巧小结之新旧版本Notification

最近开发用到了通知功能,但有几个地方老是提示deprecated,然后就找了篇文章学习了下新旧版本的不同. Notification即通知,用于在通知栏显示提示信息. 在较新的版本中(API level  > 11),Notification类中的一些方法被Android声明deprecated(弃用),其实基本上相当于全部弃用了,因为这个类本身方法就少得可怜. Android官方声明弃用,一定有它的理由,虽然我也不知道是什么.奈何本人轻度强迫症患者,人家都建议你不要用了,那就不要老是恪守着N年

Android RxJava使用介绍(一)概念

RxJava到底是什么?使用RxJava到底有什么好处呢?其实RxJava是ReactiveX中使用Java语言实现的版本,目前ReactiveX已经实现的语言版本有: Java: RxJava JavaScript: RxJS C#: Rx.NET C#(Unity): UniRx Scala: RxScala Clojure: RxClojure C++: RxCpp Ruby: Rx.rb Python: RxPY Groovy: RxGroovy JRuby:RxJRuby Kotlin

Android Fragment小结

为何使用Fragment? 实现UI的灵活组建与拆分,与Activity配合可保持Activity的视图不变,转而操作Fragment,就像Activity的模块与组建一样.同时解决了 在平板上UI的适应性. <Android编程权威指南>一书作者提出了AUF(即Always Use Fragment)原则----暂且相信他 Fragment 的生命周期依赖于Activity的生命周期,并且有自己独特的方法,不多赘述. 1.获取Fragment的视图(layout转成视图对象) 通过重写fra

Android RxJava使用介绍(一) Hello World

最近在做东西的时候,一直在使用RxJava框架,越是深入了解RxJava,就越觉得这个框架威力实在是太大了.好东西不能一个人独自享受,后面几篇文章我会由浅入深来介绍一下RxJava的使用方法,相信看完之后,你会跟我一样逐渐喜欢上这个"威力无比"的武器!那么,RxJava到底是什么?使用RxJava到底有什么好处呢?其实RxJava是ReactiveX中使用Java语言实现的版本,目前Reactive... http://bar.cnyes.com/html/100102-1/8D260

Android RxJava使用介绍(三) RxJava的操作符

上一篇文章已经具体解说了RxJava的创建型操作符.本片文章将继续解说RxJava操作符.包括: Transforming Observables(Observable的转换操作符) Filtering Observables(Observable的过滤操作符) Transforming Observables(Observable的转换操作符) buffer操作符 buffer操作符周期性地收集源Observable产生的结果到列表中.并把这个列表提交给订阅者,订阅者处理后,清空buffer列

Android存储小结

转自:http://www.liaohuqiu.net/cn/posts/storage-in-android/ android系统自身自带有存储,另外也可以通过sd卡来扩充存储空间.前者好比pc中的硬盘,后者好移动硬盘. 前者空间较小,后者空间大,但后者不一定可用. 开发应用,处理本地数据存取时,可能会遇到这些问题: 需要判断sd卡是否可用: 占用过多机身内部存储,容易招致用户反感,优先将数据存放于sd卡; 应用数据存放路径,同其他应用应该保持一致,应用卸载时,清除数据: 标新立异在sd卡根目