Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 改装:如果没有网络,取消呼叫_Java_Android_Retrofit - Fatal编程技术网

Java 改装:如果没有网络,取消呼叫

Java 改装:如果没有网络,取消呼叫,java,android,retrofit,Java,Android,Retrofit,实际上,当我使用带有无线电频率的设备时,我的应用程序出现了问题。如果设备不在无线电范围内,但试图发送文件,我会收到一个ON故障,我会告诉用户没有网络,但主要问题是,一旦设备返回到无线电范围内,它就会在网络中返回它发送的文件,而我在网络外时尝试发送的文件 因此,我可以在失败时取消调用,但尝试放置call.cancel();失败是行不通的 如何解决该问题?您可以扩展回调类以创建自己的类CancelableCallback,如下所示: public class CancellableCallback&

实际上,当我使用带有无线电频率的设备时,我的应用程序出现了问题。如果设备不在无线电范围内,但试图发送文件,我会收到一个ON故障,我会告诉用户没有网络,但主要问题是,一旦设备返回到无线电范围内,它就会在网络中返回它发送的文件,而我在网络外时尝试发送的文件

因此,我可以在失败时取消调用,但尝试放置call.cancel();失败是行不通的


如何解决该问题?

您可以扩展回调类以创建自己的类CancelableCallback,如下所示:

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);
        }
    }
public类cancelablecallback实现回调{
私有回调;
取消私有布尔运算;
私有CancelableCallback(){}
公共可取消回调(回调回调){
this.callback=回调;
取消=假;
}
公开作废取消(){
取消=真;
callback=null;
}
@凌驾
公开无效成功(T o,响应){
如果(!取消){
callback.success(o,response);
}
}
@凌驾
公共无效失败(错误){
如果(!取消){
回调失败(错误);
}
}

您可以扩展回调类以创建自己的类CancelableCallback,如下所示:

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);
        }
    }
public类cancelablecallback实现回调{
私有回调;
取消私有布尔运算;
私有CancelableCallback(){}
公共可取消回调(回调回调){
this.callback=回调;
取消=假;
}
公开作废取消(){
取消=真;
callback=null;
}
@凌驾
公开无效成功(T o,响应){
如果(!取消){
callback.success(o,response);
}
}
@凌驾
公共无效失败(错误){
如果(!取消){
回调失败(错误);
}
}