2014-11-16 18 views
5

Używam aplikacji Google Map Android API v2 do mojej aplikacji na Androida. Nie mam zainicjować GoogleMap następująco wewnątrz onCreateUzyskiwanie dostępu do GoogleMap spoza wątku interfejsu użytkownika w Androidzie

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

W mojej aplikacji, muszę wykonać kilka zadań w tle i używam AsybcTask za to. Podczas postępu w pracy w tle chcę zaktualizować mapę. Proszę zapoznać się z poniższą próbką.

@Override 
    protected Void doInBackground(Void...voids) { 
     while(Condition) 
     { 
      mGoogleMap.clear(); 
      mGoogleMap.addMarker(marker); 
      Thread.sleep(5000); 
     } 
    } 

Wiem, że nie mogę bezpośrednio uzyskać dostępu do komponentów interfejsu w metodzie doInBackground. Do popularnych składników interfejsu użytkownika, takich jak przyciski, editeksty, widoki tekstowe, można uzyskać dostęp, analizując kontekst aplikacji do klasy AsyncTask. Ale nie mogę znaleźć sposobu na uzyskanie dostępu do GoogleMap z metody doInBackground. Czy możesz podać mi rozwiązanie.

Odpowiedz

5

jeśli AsyncTask jest częścią Activity można po prostu użyć runOnUiThread metody, na przykład:

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

Dzięki. Działa jak marzenie. – ANJ

+3

Lepiej dodać Thread.sleep (5000) poza runOnUiThread (...) – ANJ

Powiązane problemy