实际上,当我使用具有无线电频率的设备时,我的应用程序出现了问题。如果设备不在无线电范围内,但尝试发送文件,我将收到onFailure信息,在这里我向用户说没有网络,但是主要问题是设备返回了无线电范围,因此它返回了网络,无论如何,当我不在网络中时,它一直在发送我尝试发送的文件。
因此,我可以取消onFailure上的呼叫,但尝试放入call.cancel();。 onFailure不起作用。
我该如何解决这个问题?
答案 0 :(得分:2)
您可以扩展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);
}
}