我使用谷歌地图Android API v2为我的Android应用程序。我在onCreate
中按如下方式初始化了GoogleMapSupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map);
mGoogleMap = fm.getMap();
在我的应用程序中,我需要做一些后台任务,并且我正在使用AsybcTask。在完成后台任务的过程中,我想更新地图。请参考以下示例。
@Override
protected Void doInBackground(Void...voids) {
while(Condition)
{
mGoogleMap.clear();
mGoogleMap.addMarker(marker);
Thread.sleep(5000);
}
}
我知道我无法直接访问doInBackground方法中的UI组件。可以通过将应用程序的上下文解析为AsyncTask类来访问常见的UI组件,如按钮,edittexts,textview。但我无法找到一种从doInBackground方法访问GoogleMap的方法。能帮我解决一下吗?
答案 0 :(得分:5)
如果您的AsyncTask
是Activity
的一部分,则可以使用runOnUiThread
方法,如下所示:
@Override
protected Void doInBackground(Void...voids) {
while(Condition)
{
runOnUiThread(new Runnable() {
@Override
public void run() {
mGoogleMap.clear();
mGoogleMap.addMarker(marker);
Thread.sleep(5000);
}
});
}
}