Android取消异步调用

3

异步调用非常方便,而且使用Quickblox Android SDK的所有调用都是异步的,允许从主UI线程轻松实现。

但是,我需要能够中止对服务器的调用,因为我的调用由同步适配器进行,并且可以在过程中被取消或中止。

2个回答

2
你可以在Android SDK中禁用异步调用——请参阅同步请求可用
然后,你可以将这个调用包装在你自己的异步任务或其他东西中。
接下来,你就可以取消查询了。

谢谢,我知道这个选项,但根据文档,它不应该用于生产产品,我更倾向于使用带有中止信号的异步功能。 - user1934104
不,如果你是一位技能優秀的開發者 - 你可以使用這個。同步查詢可能會產生ANR,所以要注意這一點。 - Rubycon
有趣的是,这仍然让我处于这样的位置:一旦调用被发出,我需要等待调用完成才能中止它。我的下一个问题是,您使用哪个Web客户端来进行调用(UrlConnection / HttpDefaultClient)? - user1934104
我们正在使用DefaultHttpClient。 - Rubycon
我们将在下一个版本中增加取消查询的机会。 我们将在接下来的两周内发布新版本的Android SDK。 - Rubycon

1

Android SDK 0.7已发布http://quickblox.com/blog/2013/01/android-sdk-0-7/

现在只需使用此代码取消查询:

QBRequestCanceler canceler =  QBUsers.getUser(37823232, new QBCallbackImpl() {
    @Override
    public void onComplete(Result result) {
         if (result.isSuccess()) {
               QBUserResult qbUserResult = (QBUserResult) result;
               System.out.println(">>> User: " + qbUserResult.getUser().toString());
         } else {
               handleErrors(result);
         }
    }
});

...    

// cancel if need
canceler.cancel();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接