我正在做一个使用新版Google Maps V2的应用,当地图相机移动时,我需要将点重新加载到新的相机位置,我用asynctask做。
问题是当我多次移动相机位置时,应用程序将点数加载倍数。因此,我在移动相机时取消了异步任务,并且在取消任务之前我没有加载新点。我有一个空的while循环来做它,有没有更好的解决方案呢?
// LOAD NEW POIS ASYNC
private void updatePoisInMap( ){
....
if (refresh_pois_async != null) {
refresh_pois_async.cancel(true);
while (!refresh_pois_async.isCancelled()) {
}
}
refresh_pois_async = new RefreshPoisAsync( ).execute( lowerLeftCorner, topRightCorner);
}
答案 0 :(得分:0)
实际上,我认为你的while循环不起作用,或者至少不像你期望的那样。 AsyncTask.isCancelled()方法通常在doInBackground()方法中使用 inside ,以支持提前取消。您有多种选择可以做您想做的事情: