我有一个应用程序,我连接到Web服务以检索数据。我使用AsyncTask来做到这一点。 这是我在doInBackground中使用的一段代码:
publishProgress(user.dbsCode() + ": Retrieving Standard Comments");
if (!_sync.isCancelled()) {
result = _dbFiller.fillStandardCommentsTable();
} else {
return null;
}
当我在我的模拟器中测试它时似乎工作正常。 isCancelled得到了设置& onCancelled()被调用。当我使用我的Galaxy平板电脑进行测试时(运行3.2 ...我的项目是使用2.2创建的),如果isCancelled被设置,它会被击中或错过。
此过程可能需要一段时间,具体取决于特定用户下载的数据量。我做的第一件事就是下载一份清单(我们称之为)"工作"为用户。然后我调用单独的Web服务来下载#34; job"的不同部分。每个步骤都包含上面的代码,我将检查我的同步任务是否被取消。我真的输了。任何有用的评论表示赞赏。即使只是一个方向。我已经做了很多关于AsyncTasks的阅读,我的脑袋正在旋转。
答案 0 :(得分:0)
您在什么情况下取消下载?
由于您实际上无法控制调度程序,因此可能是您的任务在您取消之前运行完成。由于真正的硬件可能比你的模拟器更快,这似乎是可能的。
如果我记得的话,取消已经完成的AsyncTask
并没有做任何事情。你确定你的任务还没有完成吗?