Autore Topic: Thread in listener button  (Letto 497 volte)

Offline Enry_h2o

  • Nuovo arrivato
  • *
  • Post: 9
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S Plus
  • Play Store ID:
    Enrico Dall' Acqua
Thread in listener button
« il: 13 Aprile 2013, 15:36:38 CEST »
0
Ciao. Vi illustro subito il mio problema.

Ho un metodo che all' interno contiene un codice che avvia un thread, una cosa del genere:
Codice (Java): [Seleziona]
void metodo() {
                try {
                        new Thread(new Runnable() {
                            public void run(){
//codice
                            }
                        }).run();
                } catch(Error e) {
                       
                }
        }

Questo metodo è inserito nell' onClickListener di un bottone, che quando viene premuto esegue correttamente il codice contenuto nel metodo. Quando, però, si preme ripetutamente e velocemente il bottone, l' applicazione si blocca. Come posso fare?

Offline s1m0

  • Utente junior
  • **
  • Post: 122
  • Respect: +14
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S
  • Sistema operativo:
    Android 4.1.2
Re:Thread in listener button
« Risposta #1 il: 15 Aprile 2013, 15:54:13 CEST »
0
Hai la necessità che siano avviati più thread o ne basta uno alla volta?

In questo secondo caso, ti tieni un boolean che indica se il thread è avviato

Quando clicchi sul pulsante se e il boolean è false, avii il thread settando la variabile a true , altrimenti non fai nulla. Quando poi il thread è finito imposti risetti il boolean a false.
Un click sul pulsante "Thanks" è sempre gradito :-)

Offline blackgin

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 1387
  • Respect: +164
    • Google+
    • blackgins
    • blackginsoft
    • Mostra profilo
  • Dispositivo Android:
    Galaxy Nexus
  • Sistema operativo:
    Mac OSX 10.8
Re:Thread in listener button
« Risposta #2 il: 15 Aprile 2013, 17:10:39 CEST »
0
Per avviare il thread devi invocare il metodo .start().
Tu stai invocando il metodo run() con il quale stai solo eseguendo il codice dentro quel metodo.
Postate il LogCat LogCat LogCat LogCat LogCat