Estoy utilizando AsyncTask para cargar datos en la interfaz de usuario. Escribí el código para descargar datos del servidor en un método diferente y estoy llamando a ese método desde doinBackground. Dará error porque los métodos de IU no pueden acceder desde doInBackground. Pero, quiero acceder. cualquier proceso alternativo está allí para acceder al método de la interfaz de usuario de doinBackground.Android: Llamar a los métodos en el subproceso de interfaz de usuario desde el método AsincrTask doInBackground
Respuesta
cualquier proceso alternativa existe para acceder a la interfaz de usuario del método doinBackground.?
Llame publishProgress()
en doInBackground()
. Ponga su lógica de actualización de UI en onProgressUpdate()
de su AsyncTask
. onProgressUpdate()
se invocará en el subproceso de aplicación principal (a.k.a., subproceso de UI) después de llamar al publishProgress()
. Here is a sample project demostrando esto.
llamada runOnUiThread (acción Ejecutable)
hola puedo llamar runOnUiThread() desde doInBackground.? Que va a funcionar.? O como siempre puedo llamar runOnUiThread de alcrear sí mismo.? Aquí tengo una duda. RunOnUiThread bloqueará la interfaz de usuario, mientras cargando datos.? –
tiene sentido cuando lo llamas desde doInBackground() .. o si no tiene ningún significado ... – ngesh
tienes que escribir runOnUIThread donde actualizas tu interfaz de usuario principal. –
Como han señalado los demás, puede usar runOnUiThread. Pero, parece un poco extraño que quieras hacer eso en tu doInBackground. Si quiere indicar el progreso al usuario, debería manejarlo en AsyncTask.onProgressUpdate y llamar a publishProgress en doInBackground.
Puede leer más sobre AsyncTask aquí: http://developer.android.com/reference/android/os/AsyncTask.html
-Dan
Uso doInBackground()
sólo para tareas que:
- tomar algún tiempo
- No están UI relacionado
Luego puede implementar AsyncTask.onPostExecute()
para ejecutar código para manejar esos resultados en la interfaz de usuario del hilo principal AsyncTask
De Javadoc para AsyncTask.onPostExecute()
:
"se ejecuta en el subproceso de interfaz de usuario después de doInBackground. ... "
- 1. Cómo invocar un método en el subproceso de interfaz de usuario desde dentro de un subproceso de trabajo?
- 2. Android: ¿puede AsyncTask regresar en otro subproceso que el subproceso de interfaz de usuario?
- 3. ¿El método loadUrl de WebView se ejecuta en el subproceso de interfaz de usuario?
- 4. Android tarea asincrónica ralentizando mi interfaz de usuario Subproceso
- 5. Llamar a los métodos DLL desde Javascript
- 6. ¿Cómo espero el método doInBackground() de SwingWorker?
- 7. ¿La inserción de ContentProvider() siempre se ejecuta en el subproceso de interfaz de usuario?
- 8. Android: llamar a métodos personalizados en ContentProvider
- 9. Invocar un método de limpieza para el subproceso de usuario Java, cuando JVM detiene el subproceso
- 10. Ejecutar el código en el subproceso de interfaz de usuario en WinRT
- 11. ¿Cómo llamar a dos métodos en el método onClick de los botones en HTML o JavaScript?
- 12. llamar a otro método en el principal método en Java
- 13. Método de llamada en el subproceso GUI desde un subproceso de temporizadores
- 14. llamar a los métodos de delegado opcionales
- 15. Llamar a un método desde el constructor en Coffeescript
- 16. Llamar a un método de fragmento desde una actividad primaria
- 17. Llamar a rm desde el subproceso utilizando comodines no elimina los archivos
- 18. ¿Llamar a un método en el código de ViewBehind desde ViewModel?
- 19. Crear scripts de Python y llamar a métodos desde C#
- 20. ¿Cómo puedo llamar a un método de WebApi desde el Método de acción MVC Controller?
- 21. Android, ¿Cómo llamar a onCreate() explícitamente desde otro método?
- 22. pyserial - es posible escribir en el puerto en serie desde el subproceso a, doblo las lecturas desde el subproceso b?
- 23. Python: ¿usar el subproceso para llamar a sed?
- 24. Inspeccionar los elementos de la interfaz de usuario en Android
- 25. ¿Cómo puedo llamar a los métodos de Java en un objeto desde una plantilla de FreeMarker?
- 26. Llamar a un método miembro no estático desde otro método
- 27. Libros sobre el diseño de interfaz de usuario de Android
- 28. llamar a los métodos súper coffeescript
- 29. Imprimir el contenido de un DocumentViewer en un subproceso de interfaz de usuario diferente
- 30. Cómo llamar dinámicamente a los métodos de acceso en Ruby
El nombre de CommonsWare es suficiente. +1. –
+1 para la respuesta clara –
conocía el método runOnUiThread(), pero le gustó el otro método de manejo de este +1. – Deva