java – 如何取消改造请求
发布时间:2020-05-24 17:49:23 所属栏目:Java 来源:互联网
导读:我滚动浏览官方 documentation的Retrofit并决定在我的项目中实现类似的东西,这样用户总是可以选择取消下载文件,一切都能正常工作.实施适当的方法,如果未能规定以下内容: service.upload1(file1, str, stringMap, new CallbackImageUpload() { @Override publ
|
我滚动浏览官方 documentation的Retrofit并决定在我的项目中实现类似的东西,这样用户总是可以选择取消下载文件,一切都能正常工作.实施适当的方法,如果未能规定以下内容: service.upload1(file1,str,stringMap,new Callback<ImageUpload>() {
@Override
public void success(final ImageUpload imageUpload,Response response) {
mRecyclerView.post(new Runnable() {
@Override
public void run() {
...
});
}
@Override
public void failure(RetrofitError error) {
if (error.isCanceled()) {
Log.e(TAG,"request is cancelled");
} else {
Log.e(TAG,"other larger issue,i.e. no network connection?");
}
}
但是红色的下划线是失败的方法.我不明白是什么问题,因为这个方法我们最初提出类Call(也许是因为发誓我而不是类Call是RetrofitError?)请告诉我如何修复. 解决方法就记忆而言,error.isCanceled()似乎并没有出现在Retrofit中.如果你想能够取消一个请求,你可以切换到他们有call.cancel()方法的Retrofit 2,或者在当前版本的Retrofit中,你可以扩展Callback类来创建你自己的类CancellableCallback,就像这样:public class CancellableCallback<T> implements Callback<T> {
private Callback<T> callback;
private boolean canceled;
private CancellableCallback() {}
public CancellableCallback(Callback<T> callback) {
this.callback = callback;
canceled = false;
}
public void cancel() {
canceled = true;
callback = null;
}
@Override
public void success(T o,Response response) {
if (!canceled) {
callback.success(o,response);
}
}
@Override
public void failure(RetrofitError error) {
if (!canceled) {
callback.failure(error);
}
}
}
编辑 然后你可以像这样使用它: CancellableCallback callback = new Callback<ImageUpload>() {
@Override
public void success(final ImageUpload imageUpload,Response response) {
mRecyclerView.post(new Runnable() {
@Override
public void run() {
...
});
}
@Override
public void failure(RetrofitError error) {
}
};
service.upload1(file1,callback);
然后像这样取消它: if (some condition && callback != null) {
callback.cancel();
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
