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