Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Cuándo usar handler.post () & cuándo al nuevo Thread ()

Me pregunto cuando debo usar handler.post(runnable); Y cuando debo usar new Thread(runnable).start();

Se menciona en la documentación de desarrolladores para Handler:

  • Cómo agregar sombra inferior al diseño de tabulación
  • Estudio androide java.lang.NoClassDefFoundError:
  • ¿Mipmap de Android?
  • El EditText de Android se oculta cuando se muestra el teclado virtual y está involucrado SurfaceView
  • Inicializando la conexión bluetooth android (cliente) a python (servidor) en pc
  • Diferencia entre vista y widget
  • Hace que Runnable r se agregue a la cola de mensajes. El runnable se ejecutará en el subproceso al que está conectado este controlador.

    ¿Significa esto si escribo en la onCreate() de Activity :

     Handler handler = new Handler(); handler.post(runnable); 

    Entonces runnable se llamará en un hilo separado o en el hilo de la actividad?

  • Android Studio 1.0.2 "minifyEnabled true" bloquea la versión firmada apk
  • Escribir aplicaciones en C o C ++ para Android?
  • Javax. * No se puede importar en mi aplicación para Android?
  • Android en tiempo real Multijugador - Creación de habitaciones está fallando
  • Cómo difundir la referencia a la aplicación de Android
  • Ninguna carpeta "apk" generada dentro de la carpeta "Build" al construir un APK
  • 4 Solutions collect form web for “Cuándo usar handler.post () & cuándo al nuevo Thread ()”

    Debe utilizar Handler.post() siempre que desee realizar operaciones en el subproceso de UI.

    Por lo tanto, digamos que en la devolución de llamada (que se ejecuta en un hilo separado) desea cambiar el texto de TextView , debe utilizar Handler.post() .

    En Android, como en muchos otros frameworks de interfaz de usuario, los elementos de la interfaz de usuario (widgets) solo se pueden modificar desde el subproceso principal.


    Editar: el ejemplo de las tareas largas

     mHandler = new Handler(); new Thread(new Runnable() { @Override public void run () { // Perform long-running task here // (like audio buffering). // you may want to update some progress // bar every second, so use handler: mHandler.post(new Runnable() { @Override public void run () { // make operation on UI - on example // on progress bar. } }); } }).start(); 

    Por supuesto, si la tarea que desea realizar es realmente larga y existe el riesgo de que el usuario cambie a alguna otra aplicación mientras tanto, debe considerar el uso de un servicio .

    El ejemplo es jacked:

     mHandler = new Handler(); new Thread(new Runnable(){ @Override public void run () { mHandler.post(new Runnable() { @Override public void run () { mUiView.setX(x); } }); } }).start(); 

    Alternativamente, puede omitir el controlador y utilizar el método de publicación en la vista directamente:

     new Thread(new Runnable(){ @Override public void run () { mUiView.post(new Runnable() { @Override public void run () { mUiView.setX(x); } }); } }).start(); 

    Este es un buen post que describe la diferencia: ¿Qué hace exactamente el método post?

    Para responder a su pregunta específica:

    ¿Significa esto que en la clase onCreate of Activity escribo:

    Handler handler = nuevo Handler () hanlder.post (ejecutables); Entonces, runnable se llamará en un hilo separado o en el hilo de la actividad?

    No, no lo será. El Runnable se llamará en el propio hilo principal. Handler se utiliza simplemente para publicar un mensaje en el subproceso al que está conectado (donde se crea). No crea un hilo por sí solo. En su ejemplo, ha creado un controlador en el subproceso principal (en el que se llama a Activity.OnCreate ()) y, por lo tanto, cualquier mensaje publicado en dicho controlador se ejecutará sólo en el subproceso principal.

    handler.post() cuando desee publicar el código (normalmente desde el subproceso de fondo) al subproceso principal . Sí, POST, al igual que usted, enviar una carta a alguien. Con la ayuda del manejador, el código se ejecutará lo antes posible, casi inmediatamente.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.