Sto utilizzando AsyncTask per caricare i dati nell'interfaccia utente. Ho scritto il codice per scaricare i dati dal server in un metodo separato e sto chiamando quel metodo da doinBackground. Darà un errore perché i metodi UI non possono accedere da doInBackground.but, voglio accedere. qualsiasi processo alternativo è lì per accedere al metodo dell'interfaccia utente da doinBackground.?Android: chiamata dei metodi sul thread UI dal metodo asyncTask doInBackground
risposta
qualsiasi processo alternativo è lì per accedere al metodo UI da doinBackground.?
Chiama publishProgress()
in doInBackground()
. Inserisci la tua logica di aggiornamento dell'interfaccia utente nello onProgressUpdate()
del tuo AsyncTask
. onProgressUpdate()
verrà chiamato sul thread dell'applicazione principale (a.k.a., thread UI) dopo aver chiamato publishProgress()
. Here is a sample project dimostrando questo.
chiamata runOnUiThread (azione Runnable)
hi posso chiamare runOnUiThread() da doInBackground.? Funzionerà.? O come al solito mi può chiamare runOnUiThread da OnCreate stesso.? Qui ho un dubbio. RunOnUiThread bloccherà l'interfaccia utente, mentre caricamento dati.? –
ha senso quando lo chiami da doInBackground() .. oppure non ha alcun significato .. – ngesh
devi scrivere runOnUIThread dove aggiorni l'interfaccia utente principale. –
Come gli altri hanno sottolineato, è possibile utilizzare runOnUiThread. Ma sembra un po 'strano che tu voglia farlo nel tuo doInBackground. Se si desidera indicare l'avanzamento all'utente, è necessario gestirlo in AsyncTask.onProgressUpdate e chiamare publishProgress nel doInBackground.
Si può leggere di più su AsyncTask qui: http://developer.android.com/reference/android/os/AsyncTask.html
-Dan
Usa doInBackground()
solo per le attività che:
- richiedere un certo tempo
- Non sono Ui legato
Quindi è possibile implementare AsyncTask.onPostExecute()
per eseguire il codice per gestire tali risultati in thread UI principale da AsyncTask
Da JavaDoc per AsyncTask.onPostExecute()
:
"viene eseguito sul thread UI dopo doInBackground. ... "
- 1. Android AsyncTask onPostExecute off del thread ui principale
- 2. android - chiamata il thread ui dal thread di lavoro
- 3. AsyncTask Android: perché doInBackground() non viene eseguito?
- 4. chiamata Retrofit all'interno AsyncTask
- 5. Android SDK AsyncTask doInBackground non in esecuzione (sottoclasse)
- 6. Parametri doInBackground AsyncTask vs parametri costruttore
- 7. Android Thread.sleep() in blocco AsyncTask UI
- 8. Picasso java.lang.IllegalStateException: chiamata metodo non dovrebbe accadere dal thread principale
- 9. Test unità Android con aggiornamenti di AsyncTask e UI Soluzione
- 10. Chiamata AsyncTask da un'altra classe
- 11. Errore di Android Studio: "Il metodo getText() deve essere chiamato dal thread UI, il thread attualmente dedotto è worker
- 12. Android: può AsyncTask restituire in un altro thread rispetto al thread UI?
- 13. AsyncTask Android come argomento metodo
- 14. Android - SQLite ContentResolver inserisce/elimina/aggiorna sul thread UI?
- 15. Come passare i dati da AsyncTask a Ui Thread
- 16. Android: il metodo doInBackground di Asynctask viene chiamato dopo un lungo ritardo
- 17. Modifica delle viste in AsyncTask doInBackground() non genera (sempre) l'eccezione
- 18. Come mostrare il toast in AsyncTask in doInBackground
- 19. Il doInBackground di AsyncTask inizia la sua esecuzione troppo tardi dopo che AsyncTask :: execute si chiama
- 20. Android 2.3.3 chiamata AsyncTask getta NoSuchFieldError
- 21. Come interrompere il thread asynctask in Android?
- 22. Android - Differenza tra thread e AsyncTask?
- 23. come interrompere il thread ASyncTask in Android
- 24. Android: Accesso UI Element dal thread del timer
- 25. Istanza Android AsyncTask e SQLite DB
- 26. Come generare un'eccezione se un metodo viene eseguito dal thread principale
- 27. Le richiamate si verificano sul thread principale (UI)?
- 28. È possibile sincronizzare un asyncTask di Android doInBackground per serializzare l'esecuzione dell'attività?
- 29. È possibile utilizzare il metodo OnPostExcecute in valori AsyncTask RETURN?
- 30. Asynctask: passa due o più valori da doInBackground a onPostExecute
Il nome di CommonsWare è sufficiente. +1 –
+1 per la risposta chiara –
conosceva il metodo runOnUiThread(), ma mi è piaciuto l'altro approccioj di gestione di questo +1 – Deva