如何取消AsyncTask并使用新参数再次执行?

时间:2014-02-06 14:48:14

标签: android android-asynctask

我有一个有MapView的应用程序。当用户缩放或平移MapView时,我执行AsyncTask的新实例以从服务器获取MapView的数据。

假设用户平移地图并触发异步任务以获取地图的数据,在获取所有数据和更新地图之前,用户再次移动地图并触发第二个异步任务。如果第二个异步任务在第一个异步任务之前完成,它将更新map,但在完成第一个异步任务后,mapview将再次更新并向用户显示错误的数据。

我想知道有没有办法停止(取消)运行异步任务并执行另一个?如果是,怎么样?

1 个答案:

答案 0 :(得分:0)

您必须致电cancel上的AsynTask取消它。

这意味着当控件在onPostExecute(result)

时,如果您取消了控件,那么控件就不会进入doInBackGround(..)

您必须检查asynctask是否已取消。您可以执行此操作isCancelled()

见这里:http://developer.android.com/reference/android/os/AsyncTask.html#cancel(boolean)

见这里:http://developer.android.com/reference/android/os/AsyncTask.html#isCancelled()