2014-11-16 50 views
5

我爲我的Android應用程序使用Google Map Android API v2。在那裏,我有初始化的GoogleMap裏面的onCreate從Android UI線程之外訪問GoogleMap

SupportMapFragment fm = (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map); 
mGoogleMap = fm.getMap(); 

如下在我的應用程序,我需要做一些後臺任務,我使用AsybcTask了點。通過後臺任務的進度,我想更新地圖。請參考以下示例。我知道我不能直接訪問doInBackground方法中的UI組件。通過解析應用程序的上下文到AsyncTask類,可以訪問常見的UI組件,如按鈕,edittext,textviews。但我無法找到一種方法從doInBackground方法訪問GoogleMap。你能否給我一個解決方案。

回答

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); 
       } 
      }); 
     } 
    } 
+0

感謝。奇蹟般有效。 – ANJ

+3

更好地在runOnUiThread(...)之外添加Thread.sleep(5000) – ANJ