Autore Topic: Info Programmazione multi thread  (Letto 325 volte)

Offline ingrea

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy
  • Sistema operativo:
    win7
Info Programmazione multi thread
« il: 29 Luglio 2014, 12:07:33 CEST »
0
Scusate la domanda forse banale.
Ho la seguente classe:
Codice (Java): [Seleziona]
public class testthread {
    void Test()
    {
        new myLocalThread("prova").run();
            }
    private class myLocalThread  extends Thread{
        public myLocalThread(String threadName) {
            super(threadName);
        }

        @Override
        public void run() {
            super.run();
                Log.d("TEST", currentThread().getName());
        }
    }
}

creo una istanza della classe "testthread" nella mia activity principale che appartiene al thread principale.
Mi aspettavo che, chiamando il metodo Test, nel log venisse scritto il nome "prova".
Invece il nome del thread corrente è "main".
Ma avendo lanciato un nuovo thread perchè rimane sempre main il thread corrente?

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Info Programmazione multi thread
« Risposta #1 il: 29 Luglio 2014, 12:16:23 CEST »
0
Ciao, il tuo problema è che chiami il thread nel modo sbagliato...
Dovresti leggerti prima un po di documentazione su come funzionano i thread in java, ma in questo caso ti basta la doc ufficiale:
Thread | Android Developers
Citazione
There are two ways to execute code in a new thread. You can either subclass Thread and overriding its run() method, or construct a new Thread and pass a Runnable to the constructor. In either case, the start() method must be called to actually execute the new Thread.

Se tu chiami la funzione run(), in pratica chiami una qualsiasi funzione sul thread chiamante. Devi chiamare start, che avvia correttamente un nuovo Thread ed esegue la funzione run a parte (vedi anche la classe Runnable)
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline ingrea

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    samsung galaxy
  • Sistema operativo:
    win7
Re:Info Programmazione multi thread
« Risposta #2 il: 29 Luglio 2014, 13:05:49 CEST »
0
ahh cavoli! grazie mille capito.


Post unito: 29 Luglio 2014, 15:22:25 CEST
Chiedo ancora scusa, quale è la procedura per eseguire dei cambiamenti nella interfaccia grafica (abilitare o disabilitare un controllo) a seguito di notifiche in thread diversi dal principale?
Mi spiego meglio so che nella UI i componenti possono essere variati solo dal thread principale. Ma nel caso la richiesta fosse prodotta daun thread separato come si fa a convertirla (previ opportuni controlli) in chiamata dal thread principale?
In vb.net dal quale io provengo esistono i Delegate che svolgono tale compito.
« Ultima modifica: 29 Luglio 2014, 15:22:25 CEST da ingrea, Reason: Merged DoublePost »