您能告诉我以下订阅示例有什么问题吗?

Could you tell me what's wrong with the following Subscription example?

以下订阅根本不起作用,当单击刷新按钮时。没有打印日志表明是否有任何 API 调用。

-注意事项: 使用 dagger2 完成所有依赖项,并像这样创建 Retrofit 实例:

@AppScope
    @Provides
    public Retrofit retrofit(OkHttpClient okHttpClient) {
        return new Retrofit.Builder()
                .client(okHttpClient)
                .baseUrl("https://~~~~~~~~~~")
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
    }

[-]在演示者中..

private final CompositeSubscription compositeSubscription = new CompositeSubscription();
...
//inside onCreate{}
compositeSubscription.add(observeRefresh());
//inside onDestroy{}
compositeSubscription.clear();

// *这是我认为有问题的部分。

private Subscription observeRefresh() {
        return view.observeBtnRefresh()
                .doOnNext(__ -> view.showLoading())
                .observeOn(Schedulers.io())
                .switchMap(__ -> model.getFoodsResponse())// [-] In model below...
                .observeOn(AndroidSchedulers.mainThread())
//                .doOnNext(model::saveFoodsState)
                .doOnEach(__ -> view.hideLoading())
                .retry()
                .subscribe();
    }

[-] 在视图中...

@BindView(R.id.btnRefresh)
    ImageButton btnRefresh;// ButterKnife.bind(this); is Done.
..
public Observable<Void> observeBtnRefresh() {
        return RxView.clicks(btnRefresh);
    }

[-] 模型中

@Inject
    FoodsNetwork foodsNetwork;

    public Observable<Response<ResponseBody>> getFoodsResponse() {
        return foodsNetwork.getFoodsResponse();
    }

[-] 食品网络...

public interface FoodsNetwork {

    @GET()
    Observable<Response<ResponseBody>> getFoodsResponse();

}

感谢您以任何方式阅读!

.observeOn(Schedulers.io()) 更改为 .subscribeOn(Schedulers.io())

您想在后台线程中完成工作,并在主线程中观察结果。有关教程,请参阅 here

我发现了什么问题,我决定保留这个问题,因为可以让其他开发人员处理一些小事情。 API 方法(路径和一些 @Query)中遗漏了一件小事,这导致它无法正常工作

@GET(".")
Observable<Response<ResponseBody>> getFoodsResponse(@Query String query);