从Android中的UI线程外部访问GoogleMap

时间:2014-11-16 17:11:28

标签: android google-maps android-asynctask

我使用谷歌地图Android API v2为我的Android应用程序。我在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,textview。但我无法找到一种从doInBackground方法访问GoogleMap的方法。能帮我解决一下吗?

1 个答案:

答案 0 :(得分:5)

如果您的AsyncTaskActivity的一部分,则可以使用runOnUiThread方法,如下所示:

@Override
    protected Void doInBackground(Void...voids) {
        while(Condition)
        {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    mGoogleMap.clear();
                    mGoogleMap.addMarker(marker);
                    Thread.sleep(5000);
                }
            });
        }
     }