¿Cómo funciona Choreographer?
Yo estaba estudiando sobre el código del marco de Android (v4.1).
Sé que el mensaje de la interfaz de usuario desencadenado por invalidate()
ahora se publica en Choreographer en lugar de UI messageQueue directamente, y estos mensajes no se ejecutarán hasta que llegue la siguiente señal VSYNC .
- ¿Cómo puedo evitar que onCreateView () de un fragmento sea llamado?
- Obtener el nombre del paquete y las firmas de uid / pid de la aplicación en el cliente nativo
- La instalación del software ha tropez ... - android
- Depuración de framework de Android en Eclipse
- ¿Qué es "android:" prefijo en el módulo android framework-res
Antes de que se ViewRootImpl
esta operación de publicación, ViewRootImpl
llama a postSyncBarrier()
Looper una vez para bloquear la UI MessageQueue, lo que significa que los mensajes que se publican en messagesQueue posteriormente no se ejecutarán hasta que se quite este bloque, lo que sucede antes de la función performTraversals()
.
Con base en el entendimiento anterior,
Si se
performTraversals()
otroinvalidate()
incluso una vez dentro deperformTraversals()
(comoonDraw()
de cualquier instancia de vista), ¿se bloqueará siempre el mensaje messageQueue de la interfaz de usuario?
A partir de observaciones prácticas, sé que esto nunca sucede.
Entonces, ¿dónde estoy equivocado?
- ¿Cómo obtienen los dispositivos Android las claves públicas de los desarrolladores?
- ¿Dónde se establece el relleno de Android para la imagen de nueve parches?
- Utilización de `onRetainCustomNonConfigurationInstance` para conservar los datos a través de los cambios de configuración
- Agregar un proyecto de android como una biblioteca en la aplicación AOSP
- Utilización de `onRetainCustomNonConfigurationInstance` para conservar los datos a través de los cambios de configuración
- Llamar a un método en el proceso del sistema sin un error de usuario calificado
- Cualquier otra fuente oficial de una sola parada para las directrices de desarrollo de Android, aparte de sitio de desarrollador?
- ¿Hay alguna diferencia en el uso de Context.getText y Context.getResources.getText?
Creo que puede obtener la respuesta a esta pregunta mirando el código de scheduleTraversals
:
void scheduleTraversals() { if (!mTraversalScheduled) { mTraversalScheduled = true; mTraversalBarrier = mHandler.getLooper().postSyncBarrier(); mChoreographer.postCallback( Choreographer.CALLBACK_TRAVERSAL, mTraversalRunnable, null); if (!mUnbufferedInputDispatch) { scheduleConsumeBatchedInput(); } notifyRendererOfFramePending(); } }
Después de la primera llamada a scheduleTraversals
mTraversalScheduled
se establece true. Las llamadas posteriores no tienen ningún efecto, postSyncBarrier
no se llama y no se coloca ninguna segunda barrera en la cola, hasta que se llama a postSyncBarrier
.
- Cómo cambiar el color de la fuente de datepicker?
- La vista web de Android no ejecuta javascript desde el script src