如何使用改造和 rxjava 取消任务
How cancel task with retrofit and rxjava
我休息api.
@Get("/serveraction")
public Observable<String> myRequest(@Query("Data") String data);
我知道,okhttp 具有取消功能(通过请求对象,通过标签),但不知道如何将它与 retrofit 和 rxjava 一起使用。用retrofit和rxjava实现网络任务取消机制最好的方法是什么?
您可以使用标准的 RxJava2 取消机制 Disposable。
Observable<String> o = retrofit.getObservable(..);
Disposable d = o.subscribe(...);
// later when not needed
d.dispose();
改造 RxJava 调用适配器会将此重定向到 okHttp 的取消。
所选答案适用于 Rx Java 1,不适用于 RxJava2。对于后者,您可以使用 Disposable。按照这个:
- 将
CompositeDisposable compositeDisposable=new CompositeDisposable()
定义为 Activity
或 class 中的 Fragment
字段。
使用 Retrofit 2 定义 api 如下:
public Observable<YourPojo> callApiWithRetrofit() {
return getService(YourApiService.class).callApi();
}
定义Disposable
并将其添加到compositeDisposable
实例:
Disposable disposable = callApiWithRetrofit().subscribeOn(Schedulers.io()).observeOn(
AndroidSchedulers.mainThread()).subscribeWith(
new DisposableObserver<List<YourPojo>>() {
@Override
protected void onStart() {
super.onStart();
}
@Override
public void onNext(@NonNull List<AlertAssetDTO> listResponse) {
}
@Override
public void onError(@NonNull Throwable e) {
}
@Override
public void onComplete() {
}
});
mCompositeDisposable.add(disposable);
无论您希望在何处取消连接(例如 Activity
的 onDestroy()
方法或 Fragment
的 onDestroyView()
方法)调用
mCompositeDisposable.clear();
可以通过这种方式将多个一次性用品添加到上面的 CompostieDisposable 中。
我休息api.
@Get("/serveraction")
public Observable<String> myRequest(@Query("Data") String data);
我知道,okhttp 具有取消功能(通过请求对象,通过标签),但不知道如何将它与 retrofit 和 rxjava 一起使用。用retrofit和rxjava实现网络任务取消机制最好的方法是什么?
您可以使用标准的 RxJava2 取消机制 Disposable。
Observable<String> o = retrofit.getObservable(..);
Disposable d = o.subscribe(...);
// later when not needed
d.dispose();
改造 RxJava 调用适配器会将此重定向到 okHttp 的取消。
所选答案适用于 Rx Java 1,不适用于 RxJava2。对于后者,您可以使用 Disposable。按照这个:
- 将
CompositeDisposable compositeDisposable=new CompositeDisposable()
定义为Activity
或 class 中的Fragment
字段。 使用 Retrofit 2 定义 api 如下:
public Observable<YourPojo> callApiWithRetrofit() { return getService(YourApiService.class).callApi(); }
定义
Disposable
并将其添加到compositeDisposable
实例:Disposable disposable = callApiWithRetrofit().subscribeOn(Schedulers.io()).observeOn( AndroidSchedulers.mainThread()).subscribeWith( new DisposableObserver<List<YourPojo>>() { @Override protected void onStart() { super.onStart(); } @Override public void onNext(@NonNull List<AlertAssetDTO> listResponse) { } @Override public void onError(@NonNull Throwable e) { } @Override public void onComplete() { } }); mCompositeDisposable.add(disposable);
无论您希望在何处取消连接(例如
Activity
的onDestroy()
方法或Fragment
的onDestroyView()
方法)调用 mCompositeDisposable.clear();
可以通过这种方式将多个一次性用品添加到上面的 CompostieDisposable 中。