[英]Accessing GoogleMap from outside the UI thread in Android
我正在为我的android应用程序使用Google Map Android API v2。 在那里,我在onCreate中初始化了GoogleMap,如下所示
SupportMapFragment 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,textviews。 但是我找不到从doInBackground方法访问GoogleMap的方法。 你能给我个解决办法吗?
如果您的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);
}
});
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.