我有一个有MapView的应用程序。当用户缩放或平移MapView时,我执行AsyncTask的新实例以从服务器获取MapView的数据。
假设用户平移地图并触发异步任务以获取地图的数据,在获取所有数据和更新地图之前,用户再次移动地图并触发第二个异步任务。如果第二个异步任务在第一个异步任务之前完成,它将更新map,但在完成第一个异步任务后,mapview将再次更新并向用户显示错误的数据。
我想知道有没有办法停止(取消)运行异步任务并执行另一个?如果是,怎么样?
答案 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()