You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android RxJava订阅返回类型错误问题求助

解决RxJava2订阅时的Required: rx.Subscription, Found: void错误

嘿,这问题很典型——你同时混用了RxJava 1和RxJava 2的API,再加上Retrofit适配器依赖配错了,才导致这些报错。咱们一步步来解决:

1. 修复Retrofit适配器依赖

你当前用的adapter-rxjava是RxJava 1适配的版本,和你引入的RxJava2完全不兼容,得换成RxJava2的适配器:

// 替换原来的adapter-rxjava为RxJava2版本
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.5.0'

2. 统一使用RxJava2的核心API

RxJava2和RxJava1的核心类有不少关键变化,别再混着用了:

  • 用Disposable代替RxJava1的Subscription,用来管理订阅生命周期
  • Observer的回调方法从onCompleted()改成了onComplete(),还新增了onSubscribe(Disposable d)方法
  • subscribe()方法在RxJava2里返回的是Disposable,而非RxJava1的Subscription

3. 正确的代码示例

替换掉你原来的代码,用纯RxJava2的写法:

// 只保留RxJava2的导入,删掉所有rx.*开头的RxJava1导入
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;

// 用Disposable代替原来的Subscription声明
private Disposable disposable;

// 订阅逻辑
disposable = GithubClient.getInstance()
    .getStarredRepositories(userName)
    .subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
    .subscribe(new Observer<List<GithubRepo>>() {
        @Override
        public void onSubscribe(Disposable d) {
            // 可以在这里保存Disposable,方便后续取消订阅
            disposable = d;
        }
        @Override
        public void onNext(List<GithubRepo> githubRepos) {
            githubRepoAdapter.setGithubRepos(githubRepos);
        }
        @Override
        public void onError(Throwable e) {
            // 记得添加错误处理逻辑,比如Toast提示用户
        }
        @Override
        public void onComplete() {
            // 订阅完成后的收尾操作,比如停止加载动画
        }
    });

4. 额外注意:清理旧导入

确保你的代码里没有任何rx.*开头的导入(比如rx.Subscription、rx.Observer),这些都是RxJava1的类,会和RxJava2的类产生冲突。

最后别忘了在页面销毁时(比如Activity的onDestroy()方法)调用disposable.dispose()取消订阅,避免内存泄漏哦!

内容的提问来源于stack exchange,提问作者DreamsInHD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:24:47