我有一个应用程序,可在其中连接到Web服务以检索数据。我正在使用AsyncTask来做到这一点。
这是我在doInBackground中使用的一部分代码:

publishProgress(user.dbsCode() + ": Retrieving Standard Comments");
if (!_sync.isCancelled()) {
    result = _dbFiller.fillStandardCommentsTable();
} else {
    return null;
}


当我在模拟器中对此进行测试时,它似乎可以正常工作。设置isCancelled并调用onCancelled()。当我使用我的Galaxy Tablet(运行3.2 ...我的项目是使用2.2创建的)进行测试时,如果设置了isCancelled,那么它会成败。

此过程可能需要一段时间,具体取决于特定用户正在下载多少数据。我要做的第一件事是为用户下载一份列表(我们称之为“工作”)。然后,我调用单独的Web服务,以下载用于“工作”的不同片段。每个步骤都包含上面的代码,用于检查同步任务是否已取消。我真的迷路了。任何有用的评论表示赞赏。甚至只是一个方向。我已经读了太多有关AsyncTasks的文章,以至于我的头在旋转。

最佳答案

您在什么情况下取消下载?

由于您实际上并不能控制调度程序,因此可能在您取消任务之前,您的任务已运行完毕。由于实际的硬件可能比仿真器快,所以这似乎是可能的。

我记得,取消已经完成的AsyncTask不会做任何事情。您确定您的任务没有完成吗?

10-08 03:21