¿El postDelayed hace que el mensaje salte al frente de la cola?
Estaba buscando en los documentos de Android para postDelayed post documentación retrasada
Esto es similar a otra pregunta – https://stackoverflow.com/questions/25820528/is-postdelayed-relative-to-when-message-gets-on-the-queue-or-when-its-the-actual- I tuve un tiempo atrás, pero es una situación diferente (y redactado mucho más claro en mi mente)
- Método sincronizado de Java
- Android IllegalArgumentException lockCanvas ()
- Pausa con handler y postDelayed en android
- Cargar anuncio (adMob) en el subproceso de fondo
- ¿Cómo gestiona la memoria Android?
Básicamente heres lo que dicen los docs para que este método – "Hace que el Runnable se agregue a la cola de mensajes, que se ejecutará después de la cantidad de tiempo especificado transcurrido.El runnable se ejecutará en el hilo de la interfaz de usuario.
Sé que cada subproceso tiene una cola de mensajes, looper y manejador asociado con él. – ¿Cuál es la relación entre Looper, Handler y MessageQueue en Android? . En términos de "ser ejecutado después de la cantidad de tiempo especificada", si pasa en 0 como el argumento para delayMillis y todavía hay mensajes en la cola de mensajes, el mensaje con 0 omitirá el resto de los mensajes (que están actualmente en frente de él) en la cola de mensajes para ser manejado directamente por el looper? Sé que el looper enviará el mensaje al manejador handleMessage () method- de cómo el Looper sabe enviar el mensaje al encargado? . Yo probaría esto por mi cuenta, pero realmente no sé cómo lo haría.
- Problema de hilo simple con la animación de Android
- ¿Cómo utilizar "runOnUiThread (runnable)" dentro del método estático?
- Activity.runOnUiThread de Android no es estático, así que ¿cómo puedo usarlo?
- Android: ¿Dejar de usar Looper?
- Acceso a la interfaz de usuario de JavaScript en Android
- Android ¿cuántos hilos puedo tener?
- ¿Qué pasa con este hilo que se puede ejecutar al final una vez que se ha completado?
- Conversión entre mensaje y cadena en android?
La respuesta corta es – no, hacer un postDelayed
no salta delante de otros trabajos no retrasados en la cola.
Tanto post
como postDelayed
llaman sendMessageDelayed
, post
utiliza un retardo de 0. Así, post
y postDelayed
con un retardo cero son equivalentes. (Véase la fuente Handler
, comenzando alrededor de la línea 324). sendMessageDelayed
indica que el mensaje en poner en la cola después de todas las solicitudes pendientes. La razón es que cada mensaje se pone en cola con el tiempo que fue en colada más un retraso opcional. La cola está ordenada por este valor de tiempo. Si enqueue un nuevo mensaje sin demora saltará (se colocará delante de) los mensajes retrasados que todavía no han alcanzado su tiempo de entrega, pero no delante de los mensajes pendientes (aquellos que han pasado su tiempo de entrega, pero aún no han sido entregado)
Como nota secundaria, si desea que el comportamiento que una solicitud omite solicitudes pendientes, puede utilizar postAtFrontOfQueue
, pero asegúrese de leer y comprender la advertencia de que sólo se utiliza en circunstancias especiales.