Visualizzazione stampabile
-
Gestione thread
Salve a tutti...
Vorrei chiedervi, se dal thread principale(della UI) creao e avvio un thread secondario, come faccio da quest'ultimo a incaricare totalmente il thread principale a eseguire qualche lavoro?
Mi spiego meglio...
ad esempio se dal thread secondario voglio stampare qualcosa su una TextView, ho visto che posso utilizzare il seguente codice:
Però a quanto pare questa operazione viene effettuata dal thread secondario(e non da quello principale), in quanto ho fatto la seguente prova:
Eseguendo il thread per 10 secondi non succede nulla, passati i 10 secondi viene stamato "primo" e subito dopo "secondo". Quindi viene stoppato il thread secondario....
CONCLUSIONE:
A me servirebbe un meccanismo in modo che il thread secondario incarica totalmente il thread principale a effettuare l'operazione. Così il thread secondario appena notifica ciò al thread principale, torna immediatamente a fare il proprio lavoro...
Sapete aiutarmi?
Vi ringrazio molto....
-
ma fai il contrario no? :)
-
ehm no....:D
mi serve proprio che il thread secondario delega il lavoro al thread principale così che il thread secondario torni immediatamente a fare il suo lavoro...
Qualcuno conosce un meccanismo?
-
Quote:
Originariamente inviato da
chri13
Salve a tutti...
Vorrei chiedervi, se dal thread principale(della UI) creao e avvio un thread secondario, come faccio da quest'ultimo a incaricare totalmente il thread principale a eseguire qualche lavoro?
Mi spiego meglio...
ad esempio se dal thread secondario voglio stampare qualcosa su una TextView, ho visto che posso utilizzare il seguente codice:
Però a quanto pare questa operazione viene effettuata dal thread secondario(e non da quello principale), in quanto ho fatto la seguente prova:
Eseguendo il thread per 10 secondi non succede nulla, passati i 10 secondi viene stamato "primo" e subito dopo "secondo". Quindi viene stoppato il thread secondario....
CONCLUSIONE:
A me servirebbe un meccanismo in modo che il thread secondario incarica totalmente il thread principale a effettuare l'operazione. Così il thread secondario appena notifica ciò al thread principale, torna immediatamente a fare il proprio lavoro...
Sapete aiutarmi?
Vi ringrazio molto....
Beh, il comportamento è perfettamente normale: hai due metodi run che vengono entrambi eseguiti nel thread principale. Il primo ha un delay di tot secondi, quindi è normale che il secondo messaggio venga visualizzato dopo. Ma entrambi i metodi sono stati eseguiti nel thread principale.
-
Si confermo, hai pienamente ragione infatti.
In ogni caso a me serve un meccanismo (simile a questo), nel quale il thread secondario resta in ascolto in una socket e ogni volta che riceve una stringa manda un messaggio al thread principale(con la stringa ricevuta) così che il thread secondario torna "immediatamente" in ascolto sulla socket e il thread principale appena riceve l'"avviso" processa la stringa....
Cosa mi consigliate più appropriato, gli Handler?
-
Quote:
Originariamente inviato da
chri13
Si confermo, hai pienamente ragione infatti.
In ogni caso a me serve un meccanismo (simile a questo), nel quale il thread secondario resta in ascolto in una socket e ogni volta che riceve una stringa manda un messaggio al thread principale(con la stringa ricevuta) così che il thread secondario torna "immediatamente" in ascolto sulla socket e il thread principale appena riceve l'"avviso" processa la stringa....
Cosa mi consigliate più appropriato, gli Handler?
In Android per gestire i thread di solito si usano gli AsyncTask o gli Handler, di solito collocati all'interno di un Service.
Questa è la best practice, ma a seconda dalle esigenze puoi anche non usare i Service o usare il meccanismo di gestione dei thread di Java come nel tuo esempio. Tutto dipende dallo scopo e dalle tue esigenze.
-
Io semplicemente devo utilizzare un thread secondario che istanzia una socket e resta in attesa di ricevere stringhe sulla stessa socket. Ogni volta che riceve una stringa avvisa il thread principale(che ci farà delle operazioni) e torna immediatamente in ascolto sulla stessa socket.
Che meccanismo mi consigli?
-
Usa due thread alla risposta della socket del primo lanci il secondo che fa le sue operazioni e poi termina mentre il primo continua a girare il Main lo usi solo per lanciare la prima volta il primo thread
Inviato dal mio Nexus 5 usando Androidiani App
-
Perfetto.
Domanda::)
Nel seguente codice:
Il thread principale istanzia e avvia il thread secondario...Nel thread secondario viene eseguito il metodo run(), dopo che esegue le due istruzioni(istruzione1, istruzione2) il trhead secondario muore? o rimane attivo per un po?
-
Appena eseguite le due istruzioni il thread secondario muore.