一、RxJava 简介 1、ReactiveX 概念 RxJava 框架 是 ReactiveX ( Reactive Extensions 响应式编程扩展 ) 在 Java 语言 上的实现 , 该框架 ReactiveX 包含了 观察者模式 / 迭代器模式 / 函数式编程 概念,简化了 异步编程 和 事件处理。 ReactiveX ( Reactive Extensions 响应式编程扩展 ) 它在许多领域都有广泛的应用, 如 : 前端开发、后端服务、移动应用程序、响应式 UI 等。 2、ReactiveX 组成部分 - 被观察者 / 观察者 / 操作符 / 调度器 / 订阅 ReactiveX 组成部分 : Observable(被观察者): Observable 是 发送 消息 3、ReactiveX 支持的语言 ReactiveX 提供了 操作符 / 工具 ,使得编写的 异步、并发 和 事件驱动 的代码 可维护性更高 ; ReactiveX 支持的语言 : ReactiveX
接上一篇 李宇翔:用Go语言实现ReactiveX(一)——Observable 本篇,我们来实现ReactiveX中的操作符,即数据传递者Deliver。
用Go语言实现ReactiveX有很大的挑战,Go语言本身没有类的继承,所以无法采用基类来做一些封装操作。不过好在Go语言是有闭包和匿名函数。 所以可以实现ReactiveX https://github.com/langhuihui/GoRx 影响设计ReactiveX的要素 没有类的继承 有匿名函数 有闭包 强类型,没有泛型 goroutine (未完待续) 李宇翔:用Go语言实现ReactiveX(二)——Deliver李宇翔:用Go语言实现ReactiveX(三)——链式编程
接上一篇 李宇翔:用Go语言实现ReactiveX(二)——Deliver 我们在上一篇,谈到了数据传递者Deliver。
; import io.reactivex.CompletableTransformer; import io.reactivex.Flowable; import io.reactivex.FlowableTransformer ; import io.reactivex.Maybe; import io.reactivex.MaybeSource; import io.reactivex.MaybeTransformer; import io.reactivex.Observable; import io.reactivex.ObservableSource; import io.reactivex.ObservableTransformer ; import io.reactivex.Single; import io.reactivex.SingleSource; import io.reactivex.SingleTransformer ; import io.reactivex.annotations.NonNull; import io.reactivex.functions.Function; import io.reactivex.functions.Predicate
使用chan做subject package main import ( "fmt" "time" "github.com/reactivex/rxgo/handlers" "github.com/reactivex/rxgo/iterable" "github.com/reactivex/rxgo/observable" ) func main() { /rxgo/fx" "github.com/reactivex/rxgo/handlers" "github.com/reactivex/rxgo/iterable" "github.com /reactivex/rxgo/observable" "github.com/reactivex/rxgo/observer" ) type MyObservable struct { } } type FlatMappableFunc func(interface{}) observable.Observable // FlatMap 参考https://github.com/ReactiveX
AndroidSchedulers.mainThread()) 我们可以将上面的操作封装成一个简单的工具类来使用,我这里提供了 Java 版和 Kotlin 版本: Java 版本: import io.reactivex.FlowableTransformer ; import io.reactivex.MaybeTransformer; import io.reactivex.ObservableTransformer; import io.reactivex.android.schedulers.AndroidSchedulers ; import io.reactivex.schedulers.Schedulers; /** * Created by x-sir on 2019/4/19 :) * Function:线程调度 import io.reactivex.MaybeTransformer import io.reactivex.ObservableTransformer import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers import java.util.concurrent.TimeUnit /** * Created by x-sir
描述 RxJava 1.X RxJava 2.X package包名 rx.xxx io.reactivex.xxx Reactive Streams规范 1.X早于Reactive Streams规范出现 :rxjava:1.2.1' compile 'io.reactivex:rxandroid:1.2.1' //2.X compile 'io.reactivex.rxjava2:rxjava:2.0.0 ' compile 'io.reactivex.rxjava2:rxandroid:2.0.0' package变化 变动主要为rx.xxx --> io.reactivex.xxx //1.X import ; import io.reactivex.ObservableSource; import io.reactivex.ObservableTransformer; import io.reactivex.disposables.Disposable ; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.schedulers.Schedulers
下面的这段代码实现一个将任意的对象转成Single实例 1 2 3 4 5 6 7 8 9 10 11 package com.example.jvmannotationsample import io.reactivex.Single ,实现将任意类型的List转成Observable实例 1 2 3 4 5 6 7 8 9 10 package com.example.jvmannotationsample import io.reactivex.Observable / Method com/example/jvmannotationsample/RxUtil__ObservableExtKt.toObservable:(Ljava/util/List;)Lio/reactivex /Observable; 4: areturn public static final <T> io.reactivex.Single<T> toSingle(T); Code /Observable.fromArray:([Ljava/lang/Object;)Lio/reactivex/Observable; 17: dup 18: ldc
lottie-react-native 三级联动的滚轮选择器: https://github.com/androidzhangjin/citypicker RxJava: https://github.com/ReactiveX /RxAndroid https://github.com/ReactiveX/RxJava 官网:reactivex.io RxJava是响应式编程(Reactive Extensions)的java Rxjava 3.0的一些改变:官方Wiki;https://github.com/ReactiveX/RxJava/wiki/What’s-different-in-3.0 Rxjava 3.x 文档可以在官方 javadoc中找到: RxJava Javadoc 3.1.1 1,Retrofit + RxJava3组合使用 首先要引入依赖 implementation “io.reactivex.rxjava3 :rxjava:3.0.0” implementation ‘io.reactivex:rxandroid:1.2.1’ implementation ‘com.squareup.retrofit2
《Kotlin 反应式编程》使用 RxKotlin 实现一个极简的 http DSL Reactive Programming Using Rx Kotlin https://github.com/ReactiveX /RxPY Go RxGo:https://github.com/ReactiveX/RxGo Groovy RxGroovy:https://github.com/ReactiveX/RxGroovy JRuby RxJRuby:https://github.com/ReactiveX/RxJRuby Kotlin RxKotlin:https://github.com/ReactiveX/RxKotlin ReactiveX这个组织负责维护。 提示: Rx 的社区网站是: http://reactivex.io/ 。
Further reading: https://github.com/ReactiveX/RxJava/wiki/Error-Handling | java.lang.NullPointerException (Functions.java:704) at io.reactivex.internal.functions.Functions$OnErrorMissingConsumer.accept( Functions.java:701) at io.reactivex.internal.observers.LambdaObserver.onError(LambdaObserver.java (ObservableObserveOn.java:281) at io.reactivex.internal.operators.observable.ObservableObserveOn :96) at io.reactivex.Scheduler$DisposeTask.run(Scheduler.java:578) at io.reactivex.internal.schedulers.ScheduledRunnable.run
:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.0.7' compile 'io.reactivex:rxandroid:1.2.0' compile 'io.reactivex compile 'io.reactivex.rxjava2:rxandroid:2.0.1' //compile 'io.reactivex.rxjava2:rxjava:2.0.7' compile 'io.reactivex:rxandroid:1.2.0' //compile 'io.reactivex:rxjava:1.1.5' ? compile 'io.reactivex.rxjava2:rxandroid:2.0.1' compile 'io.reactivex.rxjava2:rxjava:2.0.7' 官方也是这样解释的 参考资料: https://github.com/ReactiveX/RxJava/wiki https://github.com/ReactiveX/RxJava/wiki/What's-different-in
添加依赖 compile 'io.reactivex.rxjava2:rxjava:2.0.0-RC5' compile 'io.reactivex.rxjava2:rxandroid:2.0.0-RC1 :rxjava:2.0.0-RC5' implementation 'io.reactivex.rxjava2:rxandroid:2.0.0-RC1' implementation ' 本节笔记Activity全文(注意io.reactivex包的引用): package com.cniao5.cniao5rxjava2demo; import android.support.v7. ; import io.reactivex.ObservableEmitter; import io.reactivex.ObservableOnSubscribe; import io.reactivex.Observer ; import io.reactivex.disposables.Disposable; import io.reactivex.functions.Action; import io.reactivex.functions.Consumer
1、引入 RxJava 依赖 Gradle 项目中 , 在 build.gradle 构建脚本中 , 添加如下依赖 ; dependencies { implementation 'io.reactivex.rxjava2 :rxjava:2.2.21' } rxjava3 依赖 : dependencies { implementation 'io.reactivex.rxjava3:rxjava:3.0.0' } Maven 项目中 , 在 pom.xml 中添加如下依赖 ; <dependency> <groupId>io.reactivex.rxjava2</groupId> <artifactId>rxjava </artifactId> <version>2.2.21</version> </dependency> rxjava3 依赖 : <dependency> <groupId>io.reactivex.rxjava3 ; import io.reactivex.Observer; import io.reactivex.disposables.Disposable; public class Main {
import io.reactivex.Observable; // 这个是rx2的包 // --- /** * 用户反馈接口 * * @param content :rxandroid:2.1.1' implementation 'io.reactivex.rxjava2:rxjava:2.2.8' 定义interface import java.util.Map ; import io.reactivex.Observable; import retrofit2.http.Field; import retrofit2.http.FieldMap; import ; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable ; import io.reactivex.schedulers.Schedulers; RustDroneDataCenter.getCenter().getCommonService().userFeedback
RxJava1.x & RxJava2.x 依赖区别 RxJava1.x 相关依赖 implementation 'io.reactivex:rxjava:1.3.0' implementation ' io.reactivex:rxandroid:1.2.1' implementation 'com.squareup.retrofit2:adapter-rxjava:2.3.0' RxJava2.x 相关依赖 implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' implementation 'io.reactivex.rxjava2:rxjava
RxJava1.x & RxJava2.x 依赖区别 RxJava1.x 相关依赖 implementation 'io.reactivex:rxjava:1.3.0' implementation ' io.reactivex:rxandroid:1.2.1' implementation 'com.squareup.retrofit2:adapter-rxjava:2.3.0' RxJava2.x 相关依赖 implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' implementation 'io.reactivex.rxjava2:rxjava
import com.example.hmsrxjava_demo.HarmonySchedulers; import org.reactivestreams.Publisher; import io.reactivex.rxjava3 .core.Flowable; import io.reactivex.rxjava3.core.FlowableTransformer; import io.reactivex.rxjava3.core.Observable ; import io.reactivex.rxjava3.core.ObservableSource; import io.reactivex.rxjava3.core.ObservableTransformer ; import io.reactivex.rxjava3.schedulers.Schedulers; /** * description:RXjava 线程调度 */ public class .annotations.NonNull; import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable
库 Android 中 RxJava 的使用 Rx相关依赖 implementation 'io.reactivex.rxjava2:rxandroid:2.0.2' implementation 'io.reactivex.rxjava2 com.lzy.net:okrx2:2.0.2' //JSON转换 implementation 'com.alibaba:fastjson:1.2.46' Rx相关的库 https://github.com/ReactiveX /RxJava ——RxJava核心库 https://github.com/ReactiveX/RxAndroid ——RxJava在Android中使用的扩展库 https://github.com "发送验证码" }) } 倒计时(未用RxBinding) Java import java.util.concurrent.TimeUnit; import io.reactivex.Observable ; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.functions.Function;