pie - android versiones
Android: ¿Cuál es la diferencia entre Activity.runOnUiThread y View.post? (3)
No hay diferencia real, excepto que View.post
es útil cuando no tiene acceso directo a la actividad.
En ambos casos, si no está en el subproceso de la interfaz de usuario, se llamará detrás de las escenas al Handler#post(Runnable)
.
Como CommonsWare mencionó en el comentario, hay una diferencia entre los dos: cuando se llama en el subproceso Ui, Activity#runOnUiThread
llamará directamente al método de run
, mientras que View#post
publicará el runnable
en la cola (por ejemplo, llame a la Handler#post
)
El punto importante de la OMI es que ambos tienen el mismo objetivo, y para quien lo use, no debería haber diferencia (y la implementación puede cambiar en el futuro).
¿Cuál es la diferencia entre Activity.runOnUiThread
y View.post
, podría alguien, por favor, explicar?
O bien son aceptables para la mayoría de las situaciones y en su mayor parte son intercambiables, pero son sutilmente diferentes. La mayor diferencia, por supuesto, es que uno está disponible desde una Activity
y el otro desde una View
. Hay mucha superposición entre ellos, pero a veces en una Activity
no tendrás acceso a una View
, y algunas veces en una View
no tendrás acceso a una Activity
.
Uno de los casos View.post
que he encontrado con View.post
que mencioné en una respuesta a otra pregunta de SO en View.post
: View.post
solo funciona desde otro subproceso cuando la View
está conectada a una ventana. Esto rara vez es un problema, pero ocasionalmente puede hacer que Runnable
nunca se ejecute, especialmente si llama a View.post
en el método onCreate
de su Activity
. Una alternativa es usar Handler#post(Runnable) que es lo que Activity.runOnUiThread
y View.post
usan de todas formas.
(editado para mayor precisión, agregado "de otro hilo")
Otra diferencia entre Activity.runOnUiThread y view.post () es que se llama al ejecutable en view.post () después de que la vista se adjunta a una ventana.