取消异步任务
是否可以取消 AsyncTask 在 中有一行命令="http://developer.android.com/reference/android/os/AsyncTask.html#doInBackground%28Params...%29" rel="nofollow">doInBackground 执行很长的操作,例如
@Override
protected Boolean doInBackground(String... filename) {
fetchfile(filename[0]);
// ...
// ...
return ...;
}
Is it possible to cancel AsyncTask that has one line command in doInBackground that performs a very long operation,like
@Override
protected Boolean doInBackground(String... filename) {
fetchfile(filename[0]);
// ...
// ...
return ...;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以通过
AsyncTask.cancel()
取消。您可以在fetchFile
方法内的适当位置取消它,在该位置您认为它不会导致数据不一致,或者在更容易回滚的位置。You can
AsyncTask.cancel()
to cancel. You can cancel it inside thefetchFile
method at an appropriate place where you feel it will not introduce inconsistencies in your data or at a place where its easier to rollback.在您的长期运行方法中,定期检查 isCanceled,如果为 true,则尽快从函数返回,以便可以关闭异步线程。
您可以从任何线程调用cancel()。
In your long run method, periodically check isCanceled, if it's true, return from function ASAP so that async thread may be closed.
And you may call cancel() from any thread.