温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

rxjava怎么切换线程

发布时间:2026-09-20 16:07:22 来源:亿速云 阅读:89 作者:小樊 栏目:编程语言

RxJava 中,切换线程是通过 Scheduler(调度器) 来完成的,常用的操作符是:

  • subscribeOn():指定 上游(被观察者) 执行线程
  • observeOn():指定 下游(观察者 / 后续操作) 执行线程

一、常用 Scheduler(线程类型)

Scheduler 说明
Schedulers.io() IO 密集型(网络、文件、数据库)
Schedulers.computation() CPU 密集型计算
Schedulers.newThread() 每次新建线程
AndroidSchedulers.mainThread() Android 主线程(需 RxAndroid)
Schedulers.single() 单线程,顺序执行
Schedulers.trampoline() 当前线程立即执行

二、基本用法示例

1️⃣ 子线程执行任务,主线程更新 UI(Android 常见)

Observable.just("data")
    .subscribeOn(Schedulers.io())          // 在 IO 线程执行
    .observeOn(AndroidSchedulers.mainThread()) // 切回主线程
    .subscribe(data -> {
        // 更新 UI
    });

2️⃣ 多次切换线程

Observable.just(1)
    .subscribeOn(Schedulers.io())             // 上游 IO
    .observeOn(Schedulers.computation())      // 切到计算线程
    .map(i -> i + 1)
    .observeOn(AndroidSchedulers.mainThread()) // 切回主线程
    .subscribe(i -> {
        // UI 操作
    });

observeOn() 可以多次调用,每次影响它之后的操作


三、subscribeOn 和 observeOn 的区别

subscribeOn()

  • 决定 事件源头(如网络请求) 在哪个线程
  • 只生效一次(第一个有效)

observeOn()

  • 决定 之后操作符和订阅者 在哪个线程
  • 可以多次切换

四、RxJava + Retrofit 示例(Android)

api.getUser()
    .subscribeOn(S Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(user -> {
        // 更新 UI
    }, throwable -> {
        // 错误处理
    });

五、注意事项

  1. Android 主线程需要 RxAndroid 依赖
implementation 'io.reactivex.rxjava3:rxandroid:3.0.2'
  1. 不要在主线程做耗时操作
  2. observeOn 之后才能更新 UI

如果你用的是 RxJava2 / RxJava3Kotlin(RxKotlin),我也可以给你对应示例。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI