2014-11-16 11 views
5

Sto utilizzando l'API di Google Maps per Android v2 per la mia applicazione Android. Ci ho inizializzare GoogleMap come segue all'interno onCreateAccesso a GoogleMap dall'esterno del thread dell'interfaccia utente in Android

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

Nella mia applicazione, ho bisogno di fare alcune operazioni in background e sto usando AsybcTask per questo. Mentre procedi con le attività in background, voglio aggiornare la mappa. Si prega di fare riferimento al seguente campione.

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

So che non posso accedere direttamente ai componenti dell'interfaccia utente all'interno del metodo doInBackground. È possibile accedere a componenti dell'interfaccia utente comuni come pulsanti, edittexts e visualizzazioni di testo analizzando il contesto dell'applicazione nella classe AsyncTask. Ma non riesco a trovare un modo per accedere a GoogleMap dal metodo doInBackground. Potresti per favore darmi una soluzione.

risposta

5

se il vostro AsyncTask è una parte della Activity si può semplicemente utilizzare runOnUiThread metodo, in questo modo:

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

Grazie. Funziona come un fascino. – ANJ

+3

Meglio aggiungere Thread.sleep (5000) all'esterno di runOnUiThread (...) – ANJ

Problemi correlati