学习 RxJava 可以分为“理解思想 → 掌握核心 → 实战练习 → 深入原理”四个阶段。下面给你一条比较系统和可落地的学习路径。
RxJava 不是“又一个异步库”,而是一种编程范式。
Observable / Flowable → 发射数据
Operator → 转换 / 过滤数据
Observer / Subscriber → 接收数据
一句话理解:
RxJava 是用“流”的方式处理异步和事件。
Observable<String> observable = Observable.create(emitter -> {
emitter.onNext("Hello");
emitter.onNext("RxJava");
emitter.onComplete();
});
observable.subscribe(
data -> Log.d("Rx", data),
error -> Log.e("Rx", error.getMessage()),
() -> Log.d("Rx", "Complete")
);
| 类别 | 操作符 |
|---|---|
| 创建 | just, fromArray, interval, timer |
| 变换 | map, flatMap, concatMap |
| 过滤 | filter, take, distinct |
| 组合 | zip, merge, concat |
| 线程 | subscribeOn, observeOn |
示例:线程切换
Observable.just(1)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(i -> updateUI(i));
RxTextView.textChanges(editText)
.debounce(300, TimeUnit.MILLISECONDS)
.switchMap(text -> api.search(text.toString()))
.subscribe(result -> showResult(result));
subscribeOn():决定上游在哪执行observeOn():决定下游在哪执行记住:
subscribeOn只有第一个有效
observeOn可以多次切换
❌ 把 RxJava 当线程池用
❌ 乱用 flatMap 导致顺序错乱
❌ 忘记 dispose() 造成内存泄漏
✅ 推荐用 CompositeDisposable
CompositeDisposable disposable = new CompositeDisposable();
disposable.add(observable.subscribe());
disposable.clear();
如果你愿意,我可以:
你现在是主要用在 Android 还是 后端?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。