Autore Topic: ProgressDialog visualizzata in "ritardo"  (Letto 796 volte)

Offline robinsep

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
ProgressDialog visualizzata in "ritardo"
« il: 02 Novembre 2012, 20:05:16 CET »
0
Ciao a tutti!  :-)
Ho iniziato da poco a sviluppare con Android, e mi sono scontrato con questo misterioso problema che proprio non riesco a risolvere:
in pratica vorrei visualizzare una ProgressDialog mentre effettuo una georeferenziazione, dato che quest'ultima operazione è molto "onerosa"; il problema è che quest'ultima sembra talmente onerosa da ritardare la visualizzazione della ProgressDialog e quindi non mostrarla affatto!
Questo è il codice che uso:
Codice (Java): [Seleziona]
...
ProgressDialog pd = new ProgressDialog(NuovoMemoIndirizzo.this);
pd.show(NuovoMemoIndirizzo.this, "Attendi...", "Ricerco l'indirizzo inserito...", true, true);
new Thread(new Runnable() {
                public void run() {
                        try {
                                try {
                                        Thread.sleep(2000);
                                } catch (InterruptedException e) {
                                        e.printStackTrace();
                                }
                                // è qui che faccio la georefernziazione...
                                addressList = geocoder.getFromLocationName(ind, 5);
                                try {
                                       Thread.sleep(2000);
                                } catch (InterruptedException e) {
                                        e.printStackTrace();
                                }
                                pd.dismiss();
                        } catch (IOException e) {}
                }
        }).start();

Ho messo persino gli sleep, ma nonostante questo la visualizzazione della progressdialog avviene praticamente dopo l'esecuzione dell'azione "pesante"...
C'è qualche motivo che ignoro??  >:(
Grazie a tutti per l'aiuto...

Offline MarcoDuff

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1073
  • Respect: +202
    • Google+
    • marcoduff
    • Mostra profilo
    • MarcoDuff's Blog
  • Dispositivo Android:
    Samsung Galaxy Nexus
  • Play Store ID:
    MarcoDuff
  • Sistema operativo:
    Windows 7
Re:ProgressDialog visualizzata in "ritardo"
« Risposta #1 il: 03 Novembre 2012, 14:59:59 CET »
0
Usa un AsyncTask per risolvere questo problema...

Offline robinsep

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Mostra profilo
Re:ProgressDialog visualizzata in "ritardo"
« Risposta #2 il: 04 Novembre 2012, 09:59:13 CET »
0
Grazie mille per l'info Marco!
Dopo qualche magheggio, ho risolto così:  :D
Codice (Java): [Seleziona]
private class pd_geocode extends AsyncTask<Void, Void, List<Address>> {
        private ProgressDialog g;
       
        @Override
        protected void onPreExecute() {
                g = ProgressDialog.show(NuovoMemoIndirizzo.this, "Attendi...", "Ricerca in corso...", true, true);
        }

        @Override
        protected List<Address> doInBackground(Void... arg0) {
                try {
                        addressList = geocoder.getFromLocationName(ind, 5);
                } catch (IOException e) {}
                return addressList;
        }
               
        @Override
        protected void onPostExecute(List<Address> l) {
                if(g.isShowing()) {
                        g.dismiss();
                }
        }
    }