Diferencia entre thread / runnable, handler, runonuithread, asynctask

Comencé a aprender la programación android y estoy trabajando en un pequeño juego. He oído que haciendo operaciones en segundo plano o actualizaciones o descarga o lo que nunca de fondo y tiempo que consume cosa no debe hacerse con hilo ui y en su lugar utilizar thread / runnable o asynctask. Pero no puedo hacer algunas cosas en los temas como la conectividad de fondo a la base de datos donde, como esta conectividad funciona con el controlador restante, runonuithread, asynctask.am muy confundido donde usar el cual. Tengo algunas preguntas 1.handler, runonuithread son tanto se ejecuta en ui hilo, hilo / runnable es un hilo diferente y en la tarea asíncrona, el método doinbackground ejecutar en diferentes hilos y otros métodos como onprogressupdate, onpreexecute y onpostexecute ejecutar en hilo ui. ¿derecho? Si eso así que escribí un programa para hacer la conectividad de la base de datos con el hilo / runnable no trabajó pero cuando lo escribí en doinbackground trabajó. Mi confusión es que como ambos métodos se ejecutan en diferentes hilos por qué esto está sucediendo. 2.¿Cuál es la diferencia principal entre los 4 y dónde son aplicables y no aplicables. Y también quiere saber cuáles son las tareas que sólo ui hilo puede hacer. Gracias en adv 🙂

Un Handler permite publicar mensajes que se ejecutarán en el subproceso principal de la interfaz de usuario. Activity#runOnUiThread(Runnable) es un método de conveniencia que utiliza un Handler internamente para publicar un Runnable en el subproceso de UI (consulte el código fuente ). Handler se utilizan a menudo para sincronizar los eventos generados en los subprocesos de fondo con el subproceso principal de la interfaz de usuario. Por ejemplo, puesto que View y otros widgets de interfaz de usuario no se pueden modificar directamente en un subproceso de fondo, el subproceso de fondo podría publicar un mensaje que hace esas modificaciones en el subproceso de interfaz de usuario principal en lugar de en segundo plano.

Un AsyncTask es una clase de utilidad que utiliza un grupo de subprocesos para ejecutar tareas y proporciona métodos de devolución de llamada útiles (es decir, onPreExecute , onPostExecute , etc.) que se garantiza que se ejecutan en el subproceso principal de UI (en otras palabras, abstrae la idea de Handler S del desarrollador).

Hola voy a tratar de darle la explicación más simple!

Thread es una clase que te permite usar la multitarea groovy. Es una clase Java estándar. Cada entorno Java (en su caso Android) puede utilizarlo.

Runnable es una interfaz que hace casi lo mismo que la clase Thread, pero es un poco más simple. Para poder usarlo, basta con implementar el método run ().

Handler es una variante más sofisticada y específica para Android de la clase Thread. Hay ciertas funciones específicas y otras cosas útiles.

RunOnUiThread es un método que nos da acceso al hilo principal o aka UI Thread en Android! Sí, de nuevo esta simple palabra Thread! Debido a que en Android no se puede modificar la interfaz de usuario de otro hilo, excepto el hilo principal (o aka UI), Google ha proporcionado un método para acceder a este hilo.

AsyncTask la clase más valiosa y fresca para extender! Está diseñado para simplificar nuestra vida como desarrolladores y hacer el mejor trabajo en el entorno de Android. Se puede considerar de nuevo como un hilo, pero "simplificado" y "unificado". ¡Esto significa que usar AsyncTask es simple, fácil y muy útil!


AsyncTask es c00l es por eso que te daré una breve descripción:

Para usarlo, es una buena práctica extender AsyncTask en su clase. ¡Que necesitas implementar 3 métodos! Sí, sólo tres!

La primera se utiliza como una "preparación". En este método todas las cosas que están sucediendo son ANTES de que se inicie el nuevo subproceso paralelo.

El segundo se utiliza para hacer su trabajo en un nuevo hilo! 1

El último (tercero) se utiliza para ejecutar algunas tareas APENAS después de completar su trabajo en el hilo recién creado.


Si usted está interesado lo suficiente, estoy seguro de que usted puede encontrar una docenas de tutoriales y ejemplos que explican esto a usted, pero mi opinión es que sólo tiene que probarlos todos!

RECUERDE Lo más importante es usar una construcción cuando sea más necesaria. No utilice estructuras complejas cuando pueda usar una más sencilla. Y por supuesto no es casualidad que haya AsyncTask o clases de Handler, que están destinados a ayudarnos!

Buena suerte y espero que esta explicación corta y basura no es demasiado confuso.

  • Necesita un ejemplo que muestre cómo realizar solicitudes HTTP asíncronas
  • Android: Errores de archivo IO
  • Programación Android Camera.PreviewCallback (con OpenGL y OpenCV)
  • Asyntask: ¿por qué actualizar el hilo de la interfaz de usuario en doInbackground se encontrará con el error?
  • Acceso al controlador de subprocesos de interfaz de usuario desde un servicio
  • Cómo guardar un archivo con un hilo de fondo en Android
  • ¿Por qué utilizar Handlers mientras que runOnUiThread hace lo mismo?
  • Android BroadcastReceiver o método simple de devolución de llamada?
  • Android: ¿Cuál es la forma más suave de sincronizar una base de datos remota en segundo plano?
  • Android VideoView setVideoURI bloquea el subproceso de la interfaz de usuario
  • ¿Cómo descargar múltiples archivos simultáneamente usando intentservice en Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.