怎样python做网站百度网盘破解版
RxJava 是一个基于观察者模式的响应式编程库,广泛用于处理异步事件流。Kotlin 与 RxJava 结合使用可以简化异步编程和事件处理。以下是一些常见的 RxJava 用法示例。
配置文件中引用:
implementation("io.reactivex.rxjava3:rxjava:3.0.2");implementation("io.reactivex.rxjava3:rxandroid:3.0.2") // 如果你在 Android 项目中使用
各种用法代码如下:
fun main() {//1.各种创建Observable.create<Int> { emitter ->for (i in 1..10) {emitter.onNext(i)}emitter.onComplete()}.subscribe({ item -> println(item) },{ error -> println(error) },{ println("complete") })//打印:1 2 3 4 5 6 7 8 9 10 complete 共11行//2.just创建val observable = Observable.just(1, 2, 3, 4, 5)observable.subscribe { println(it) } //打印:1 2 3 4 5 共5行//3.fromArray创建val observable2 = Observable.fromArray(1, 2, 3, 4, 5)observable2.subscribe { println(it) } //打印:1 2 3 4 5 共5行//4.range创建val observable3 = Observable.range(1, 5)observable3.subscribe { println(it) } //打印:1 2 3 4 5 共5行//5.interval创建val observable4 = Observable.interval(1, TimeUnit.SECONDS)observable4.subscribe { println(it) } //每隔1秒打印一次数字//6.timer创建val observable5 = Observable.timer(1, TimeUnit.SECONDS)observable5.subscribe { println(it) } //1秒后打印数字0//7.error创建val observable6 = Observable.error<Throwable>(RuntimeException("error"))observable6.subscribe ({item->println(item)},{e -> println(e)} ) //打印:java.lang.RuntimeException: error//8.fromIterable创建val list = listOf(1, 2, 3, 4, 5)val observable7 = Observable.fromIterable(list)observable7.subscribe { println(it) } //打印:1 2 3 4 5 共5行// 二.操作符//1.map 将发射的数据进行转换。val observable8 = Observable.just(1, 2, 3, 4, 5)observable8.map { it * 2 }.subscribe { println(it) } //打印:2 4 6 8 10 共5行//2.flatMap 将发射的数据进行转换,并且将转换后的数据合并后发射。val observable9 = Observable.just(1, 2, 3, 4, 5)observable9.flatMap { Observable.just(it * 2) }.subscribe { println(it) } //打印:2 4 6 8 10 共5行//3.concatMap 将发射的数据进行转换,并且将转换后的数据合并后发射,但是和flatMap不同的是,concatMap会按照发射的顺序来发射数据。val observable10 = Observable.just(1, 2, 3, 4, 5)observable10.concatMap { Observable.just(it * 2) }.subscribe { println(it) } //打印:2 4 6 8 10 共5行//4.concat 将多个Observable发射的数据按照顺序合并后发射。val observable11 = Observable.concat(Observable.just(1, 2, 3), Observable.just(4, 5, 6))observable11.subscribe { println(it) } //打印:1 2 3 4 5 6 共6行//5.merge 将多个Observable发射的数据合并后发射。val observable12 = Observable.merge(Observable.just(1, 2, 3), Observable.just(4, 5, 6))observable12.subscribe { println(it) } //打印:1 2 3 4 5 6 共6行//6.zip 将多个Observable发射的数据按照顺序合并后发射,并且合并后的数据数量为发射的数据数量最少的Observable。val observable13 = Observable.zip(Observable.just(1, 2, 3), Observable.just(4, 5, 6,7)){ a, b -> a + b }observable13.subscribe { println(it) } //打印:5 7 9 共3行//7.filter 过滤发射的数据,只有满足条件的数据才会被发射。val observable14 = Observable.just(1, 2, 3, 4, 5)observable14.filter { it % 2 == 0 }.subscribe { println(it) } //打印:2 4 共2行//8.take 只发射前n个数据。val observable15 = Observable.just(1, 2, 3, 4, 5)observable15.take(3).subscribe { println(it) } //打印:1 2 3 共3行//9.skip 跳过前n个数据。val observable16 = Observable.just(1, 2, 3, 4, 5)observable16.skip(3).subscribe { println(it) } //打印:4 5 共2行//10.takeWhile 只发射满足条件的数据。val observable17 = Observable.just(1, 2, 3, 4, 5)observable17.takeWhile { it < 4 }.subscribe { println(it) } //打印:1 2 3 共3行//11.skipWhile 跳过满足条件的数据。val observable18 = Observable.just(1, 2, 3, 4, 5)observable18.skipWhile { it < 4 }.subscribe { println(it) } //打印:4 5 共2行//12.takeUntil 只发射不满足条件的数据。val observable19 = Observable.just(1, 2, 3, 4, 5)observable19.takeUntil { it == 4 }.subscribe { println(it) } //打印:1 2 3 共3行//13.takeLast 只发射最后n个数据。val observable21 = Observable.just(1, 2, 3, 4, 5)observable21.takeLast(3).subscribe { println(it) } //打印:3 4 5 共3行//14.distinct 去重,只发射第一次出现的数据。val observable22 = Observable.just(1, 2, 3, 4, 5, 1, 2, 3)observable22.distinct().subscribe { println(it) } //打印:1 2 3 4 5 共5行// 三.线程调度//1.subscribeOn 指定Observable执行的线程。val observable23 = Observable.just(1, 2, 3, 4, 5)observable23.subscribeOn(Schedulers.io()).subscribe { println(it) } //打印:1 2 3 4 5 共5行//2.observeOn 指定Observer执行的线程。val observable24 = Observable.just(1, 2, 3, 4, 5)observable24.observeOn(Schedulers.computation()).subscribe { println(it) } //打印:1 2 3 4 5 共5行// 四.错误处理Observable.error<Throwable>(RuntimeException("Error occurred")).subscribe({ println("OnNext: $it") },{ println("OnError: ${it.message}") },{ println("OnComplete") }) //打印:OnError: Error occurred}
五.处理生命周期
class MyActivity : AppCompatActivity() {private val compositeDisposable = CompositeDisposable()override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)val disposable = Observable.just(1, 2, 3).subscribe { println(it) }compositeDisposable.add(disposable)}override fun onDestroy() {super.onDestroy()compositeDisposable.clear() // 取消所有订阅}
}