Autore Topic: Dubbi thread  (Letto 776 volte)

Offline bomberdini

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
Dubbi thread
« il: 23 Aprile 2012, 12:32:09 CEST »
0
salve a tutti... ho scritto un thread il quale però, e non so per quale motivo mi stampa solo l'ultimo risultato.
Mi spiego meglio. ho il seguente frammento di codice
Codice (Java): [Seleziona]
        public void onClick(View v) {
                               
                                // TODO Auto-generated method stub
                                new Thread()
                                {
                                        int contappo=0;
                                        public void run()
                                        {
                                                //System.out.println("operazione in background");
                                                runOnUiThread(new Runnable()
                                                {
                                                       
                                                        @Override
                                                        public void run()
                                                        {
                                                                while(true){
                                                               
                                                                //System.out.println("Aggiornamento interfaccia");
                                                                tv.setText("conto "+contappo);
                                                               
                                                               
                                                               
                                                               
                                                                try {
                                                                        sleep(1000);
                                                                        contappo++;
                                                                       
                                                                       
                                                                } catch (InterruptedException e) {
                                                                        // TODO Auto-generated catch block
                                                                        e.printStackTrace();
                                                                }
                                                                if(contappo==5) break;
                                                                }
                                                        }
                                                });
                                        }
                                }.start();
                        }

L'esecuzione di questo thread mi stampa nella textView solo il valore 4. Vorrei invece visualizzare tutti i valori passo passo. Qualcuno può aiutarmi? grazie a tutti per l'aiuto :)

Offline bomberdini

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
Re:Dubbi thread
« Risposta #1 il: 23 Aprile 2012, 16:48:30 CEST »
0
qualcuno ha idea del motivo perchè mi stampa solo l'ultimo valore?

Offline theBaffo

  • Utente normale
  • ***
  • Post: 164
  • Respect: +24
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Windows 8.1
Re:Dubbi thread
« Risposta #2 il: 23 Aprile 2012, 16:58:44 CEST »
+1
vedi solo 4 perchè ogni volta sovrascrivi il valore precedente!  ;-) prova a fare cosi:

Codice (Java): [Seleziona]
tv.append("conto "+contappo+"\n");
cosi inserisci il valore e và a capo!  :-)
Se ti sono stato utile, premi "thanks" ;)

"Errare è umano, ma per incasinare davvero tutto è necessario un computer" - Arthur Bloch

Offline bomberdini

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
Re:Dubbi thread
« Risposta #3 il: 23 Aprile 2012, 17:14:38 CEST »
0
ok cosi funziona e mi stampa

conto 0
conto1
conto2
conto3
conto4

ma me li stampa tutti insieme alla fine. Sai per caso come posso stampare una cosa cosi:

conto0
(sleep)
conto1
(sleep)
grazie ancora :)

Offline teskio

  • Moderatore globale
  • Utente normale
  • *****
  • Post: 387
  • Respect: +118
    • Github
    • Google+
    • Mostra profilo
    • Skullab
  • Dispositivo Android:
    Cubot GT99 / SurfTab Ventos 10.1
  • Play Store ID:
    Skullab Software
  • Sistema operativo:
    windows 7 / ubuntu 12.04
Re:Dubbi thread
« Risposta #4 il: 23 Aprile 2012, 17:15:38 CEST »
0
Perchè creare un Thread al cui interno inserire una chiamata al Thread della UI ? Tanto vale sull'onClick chiamare direttamente "runOnUiThread()"
Il logcat che dice ?  :-) Usa Log | Android Developers come strumento di debug.
Altra soluzione comunque potrebbe essere quella di usare gli Handler | Android Developers congiuntamente ad un Thread, oppure usare gli AsyncTask | Android Developers
a riguardo c'è un ottimo tutorial sul forum : [facile] Aggiornare la UI da una Thread - Android Developers Italia

Offline bomberdini

  • Nuovo arrivato
  • *
  • Post: 41
  • Respect: 0
    • Mostra profilo
Re:Dubbi thread
« Risposta #5 il: 23 Aprile 2012, 17:28:50 CEST »
0
ho visto su qualche sito la cosa di richiamare all'interno di un altro thread. pero effettivamente funziona,  fa lo sleep infatti attendo i secondi dello sleep prima di vedere il risultato. Pero io vorrei che mi stampasse i valori un passo alla volta. Invece attendo gli sleep ma mi stampa tutto il risultato alla fine e non so perchè :(