繁体   English   中英

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

[英]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的方法。 你能给我个解决办法吗?

如果您的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);
                }
            });
        }
     }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM