Android 在AsyncTask中填充地图需要触摸屏才能看到点

Android 在AsyncTask中填充地图需要触摸屏才能看到点,android,android-asynctask,android-mapview,Android,Android Asynctask,Android Mapview,我的mapview有问题-我用AsyncTask填充它,但在它完成后,点直到屏幕被点击才显示(第一次触摸后,所有点都正确显示) 一旦创建: dialog=ProgressDialog.show(MyMap.this,“填充映射”, “请稍等……”,对) 新建AddOverlays().execute() 我的任务: class AddOverlays extends AsyncTask <Void, Void, String>{ @Override p

我的mapview有问题-我用AsyncTask填充它,但在它完成后,点直到屏幕被点击才显示(第一次触摸后,所有点都正确显示)

一旦创建:

dialog=ProgressDialog.show(MyMap.this,“填充映射”, “请稍等……”,对)

新建AddOverlays().execute()

我的任务:

class AddOverlays extends AsyncTask <Void, Void, String>{
        @Override
        protected String doInBackground(Void... unsued) {

                //do my looping work to add items to map

            mapOverlays.add(itemizedOverlay);   

            String nothing = "";
            return nothing;
        }

        @Override
        protected void onProgressUpdate(Void... unsued) {

        }

        @Override
        protected void onPostExecute(String sResponse) {
            if (dialog.isShowing())
                dialog.dismiss();
        }
    }
class AddOverlays扩展了异步任务{
@凌驾
受保护的字符串背景(无效…未指定){
//执行循环工作以将项目添加到地图
添加(itemizedOverlay);
字符串nothing=“”;
一无所获;
}
@凌驾
受保护的void onProgressUpdate(void…unseed){
}
@凌驾
PostExecute上受保护的void(字符串响应){
if(dialog.isShowing())
dialog.dismise();
}
}
尝试呼叫:
invalidate()
来自UI线程 或
postInvalidate()
来自另一个线程

在MapView对象上重新绘制地图视图

您应该调用
mapOverlays.add(itemizedOverlay)
onPostExecute(字符串响应)
中,因为添加新的覆盖不是一个昂贵的操作


我想您将在
doInBackground(Void…unused)
中执行某种昂贵的操作,因为到目前为止,您并不真正需要整个AddOverlays任务。

我在onPostExecute中添加了该插件,但这没有解决问题,所以我移回(将其放回)。是的,在doInBackground有很多繁重的工作正在进行。回复:失效或后验证-您的意思是在重新创建此地图视图时?你能举个例子吗?我能把PostValidate添加到onPostExecute吗?如果是这样的话?
onPostExecute()
只需调用
mapView.invalidate()
,其中mapView变量是对mapView对象的引用:)您是使用
AsyncTask
作为
MapActivity
的内部类,还是使用
服务运行任务?如果是这样,由于
MapView
引用不可序列化,如何在intent中传递该引用?