La mejor manera de ejecutar el método asincrónicamente en Android (compacto y correcto)

Digamos que tengo una actividad que muestra algún contenido en la pantalla. Necesito ejecutar algún método (asyncMethod) de forma asincrónica y cuando se hace, tengo que actualizar los datos en la pantalla. ¿Cuál es la manera más correcta y sencilla de hacer esto?

Actualmente la manera más simple que conozco es usar hilo:

new Thread(new Runnable() { public void run() { asyncMethod(); } }).start(); 

Estoy familiarizado con AsyncTask, pero es más complejo que usar el hilo y para cada método que necesito para ejecutar de forma asíncrona hay una necesidad de crear AsyncTask nuevo, mientras que esto es grandemente el tamaño del código aumenta.

Pensé en algún genérico AsincTask que obtiene el método como un parámetro y que lo ejecuta, pero en la medida en que sé que es imposible en Java para pasar métodos como parámetros.

En otras palabras, estoy buscando la forma más compacta (pero correcta) para ejecutar métodos asincrónicamente.

2 Solutions collect form web for “La mejor manera de ejecutar el método asincrónicamente en Android (compacto y correcto)”

Handler y Looper .

La mayoría de las veces, mantenga el Handler al Looper del hilo de UI y luego utilícelo para publicar Runnable . Por ejemplo:

 Handler h = new Handler(); //later to update UI h.post(new Runnable(//whatever); 

PS: Handler y Looper son impresionantes. Tanto que los he rehecho para Java.

Si utilizó el patrón de diseño de comandos y realizó un AsyncTask genérico que podría ejecutar los objetos de "comando", sólo necesitaría una clase para cada tarea y la AsyncTask genérica para ejecutarlas todas. Incluso podría ir tan lejos como para hacer un genérico "comando" que ejecutó un método a través de reflexiones o algún método de interfaz predefinida.

  • Thread / Handler error - El token de barrera de sincronización de cola de mensajes especificado no se ha publicado
  • Multiprocesamiento en Android
  • ¿Qué sucede con el subproceso como onDestroy se llama cuando se gira el dispositivo
  • ¿Por qué utilizar AsyncTaskLoader con LoaderManager, en lugar de Simple Handler?
  • Compartir el contexto GLES20 y texturas entre GLSurfaceViews diferentes?
  • Acceso al controlador de subprocesos de interfaz de usuario desde un servicio
  • ¿Cuándo debo usar cada uno de los diferentes tipos de mensajería de Android?
  • Para forzar la cancelación AsyncTask no debería el indicador periódicamente marcado en doInBackground ser volátil?
  • Buenas prácticas para multi-threading
  • Libgdx utiliza ScreenUtils de forma asincrónica y no detiene el bucle del juego
  • ¿Cómo ejecutar el servicio no en el hilo principal?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.