Android 在AsyncTask中填充地图需要触摸屏才能看到点
我的mapview有问题-我用AsyncTask填充它,但在它完成后,点直到屏幕被点击才显示(第一次触摸后,所有点都正确显示) 一旦创建: dialog=ProgressDialog.show(MyMap.this,“填充映射”, “请稍等……”,对) 新建AddOverlays().execute() 我的任务: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
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中传递该引用?