android,如何在Retrofit2 / rx中取消当前请求

时间:2019-02-08 18:36:09

标签: android rx-java retrofit2 rx-android

我是Retrofit / rxjava-android的新手

有人告诉我,最好的做法是,如果呼叫尚未结束并且用户离开活动页面,则取消请求。

我在哪里/如何取消它方面遇到问题。

这是我的代码,工作正常。

Observable<List<MyObject>> call;
public void getStaticMessages() {
    call = restInterface.loginURL();
    call.subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<List<MyObject>>() {
        @Override
        public void onCompleted() {

        }

        @Override
        public void onError(Throwable e) {
            Log.d("LOGGER", "error");
        }

        @Override
        public void onNext(List<MyObject> myObjects) {
            Log.d("LOGGER", "succcess");
        }
    });

}

1 个答案:

答案 0 :(得分:1)

最佳实践之一是,在调用onStart()的活动/分段方法时创建预订/可处置,并在调用onStop时取消预订/处置。

您可以创建一个一次性Disposable disposable = call.subscribeOn,然后通过disposable.dispose()进行处置,也可以使用CompositeDisposable

在之前的一个宠物项目-link

中,我对CompositeDisposable使用了相同的方法