run - service handler android
Diferencia entre Handler.post(Runnable r) y Activity.runOnUiThread(Runnable r) (3)
De los documentos oficiales de Handler
Entrenador de animales
Hay dos usos principales para un Manejador:
(1) Para programar mensajes y ejecutables que se ejecutarán como algún punto en el futuro.
(2) Para poner en cola una acción que se realizará en un hilo diferente al suyo.
En resumen, Handler se usa para administrar Runnables diferentes.
runOnUiThread
Se utiliza para ejecutar la operación que no es UI en el subproceso UI, por ejemplo, si desea actualizar la pantalla del DoInBackground de AsyncTask (), debe escribir la parte del código que actualiza la UI dentro del runOnUiThread (). Pero nuevamente eso bloqueará la IU.
Esta pregunta ya tiene una respuesta aquí:
¿Hay alguna diferencia entre
new Handler.post(Runnable r);
y
activity.runOnUiThread(Runnable r)
Un Handler
se adjunta a la cadena en la que se creó.
handler.post(Runnable)
se puede usar para ejecutar código en el thread al que está asociado Handler.
Activity.runOnUIThread(Runnable)
ejecuta siempre el ejecutable dado en UIThread de la actividad. Internnaly lo hace a través de un controlador Actividad crea cuando se construye así:
final Handler mHandler = new Handler();
Por lo tanto, el código runonUiThrad se ve así:
public final void More ...runOnUiThread(Runnable action) {
if (Thread.currentThread() != mUiThread) {
mHandler.post(action);
} else {
action.run();
}
}
Como puede ver si el hilo actual no es el hilo de UI, publica el ejecutable dado en su controlador de miembro al que nos referimos anteriormente. Si la persona que llama ya está en el hilo de la interfaz de usuario, simplemente llama al ejecutable.
Rad el código here .
runOnUiThread
es básicamente adecuado para mostrar un diálogo de progreso o realizar algunas manipulaciones de UI antes de una llamada AsyncTask
. Si desea actualizar la interfaz de usuario en medio de una ejecución de subprocesos, el mejor enfoque es crear un Handler
que actualice su interfaz de usuario y permita que el hilo continúe ejecutándose, por ejemplo, actualizando periódicamente una vista de texto después de unos segundos, decir la funcionalidad del temporizador.