¡Desarrollo de Android ndk! Entrevista de ingeniero senior de Android combate real, ruta de aprendizaje + combinación de puntos de conocimiento

Prefacio

2020 es un año de cambio. Debido a la epidemia en la primera mitad del año, muchos amigos que estudiaron el desarrollo de Android perdieron sus trabajos. Aunque encontraron un trabajo, no marcaron la diferencia. En la segunda mitad del año año, Oro, Nueve, Plata y Diez tienen ideas para cambiar de trabajo, y hay muchas necesidades. La experiencia de la entrevista de Dachang y las preguntas de la entrevista real de Dachang, quieren prepararse para la siguiente pregunta con anticipación. A continuación, compartiré mi experiencia en entrevistas y un resumen de grandes empresas como Bytedance, Alibaba, Baidu, Xiaomi, etc. (Adjunto al final del artículo hay un análisis completo de preguntas reales)

  • Ali (rechazado)
  • Byte batiendo (oferta)
  • Xiaomi (oferta)
  • Mano cien (oferta)

Generación de mensajes

El usuario desliza la pantalla para generar una serie de eventos de entrada (un evento Down, varios eventos Move y un evento Up). Estos eventos son empaquetados por el sistema en una serie de Mensajes (un Mensaje Down, varios Mensajes Move y uno Mensaje arriba)

El mensaje se utiliza para transmitir información. El mensaje anterior contiene la información de estos eventos de entrada, como la coordenada xy la coordenada y.

MessageQueue 存放 Mensaje

Una vez generados los mensajes, surge una pregunta: ¿cómo se envían estos mensajes a la aplicación? Si quiero deslizar los Momentos, estos mensajes deben enviarse a WeChat para que WeChat los procese. WeChat enviará estos eventos al control de Lista de Momentos para permitir que la Lista genere contenido nuevo y se deslice hacia arriba y hacia abajo.

Lo primero que me viene a la mente es si puede enviar directamente estos mensajes al control List en Moments (SystemServer puede enviar Binder directamente al control List), sí, pero es problemático; SystemServer envía directamente mensajes de entrada al control List en Momentos, luego SystemServer debe primero Sabiendo que existe tal control, la pregunta es qué controles hay en la aplicación, SystemServer no lo sabe, ¿es necesario atravesar todos los controles y enviar un mensaje repetido a cada control? Obviamente, esto no es lo que queremos.

SystemServer no se puede enviar directamente al control, por lo tanto, ¿se puede enviar directamente a la aplicación y dejar que la aplicación lo maneje por sí misma? La respuesta es sí. Ahora Android hace lo mismo. Tu aplicación prepara un MessageQueue (cola de mensajes). Si tengo un mensaje, colócalo en este MessageQueue y tu aplicación lo manejará tú mismo. ¿No es hermoso? Este es el razón por la que aparece MessageQueue.

Looper envía un mensaje

Después de que la aplicación prepara un MessageQueue, SystemServer coloca una serie de mensajes de entrada (una serie de mensajes (un mensaje hacia abajo, varios mensajes de movimiento y un mensaje hacia arriba)) empaquetados antes en WeChat MessageQueue, y el resto se deja en WeChat. sí mismo Para leer el contenido de MessageQueue, actualice la interfaz de usuario usted mismo

El problema es que MessageQueue solo se usa para almacenar Message y alguien necesita administrar esta MessageQueue. Por ejemplo, hay varios mensajes en MessageQueue. ¿Quién debería enviar estos mensajes para tratar?

Looper se introduce aquí. Looper decide quién debe enviar este mensaje para ser procesado. Looper sacará el mensaje uno por uno de acuerdo con el orden del mensaje en MessageQueue, y lo enviará de acuerdo con el mensaje que viene con el mensaje (quién Quiero ser procesado-target) Tratar con la persona correspondiente

En este ejemplo, el objetivo de estos mensajes es el controlador del hilo principal de WeChat

El manejador maneja el mensaje

En ese momento, salió el Handler. Se dijo que Looper envió el Mensaje a la persona correspondiente para su procesamiento. Esta persona es el Handler. El Handler se utiliza para procesar el Mensaje. Como último enlace del mecanismo de Mensaje, el Handler lee el contenido del Mensaje y realiza el procesamiento relacionado basado en el contenido.

En este ejemplo, el controlador del hilo principal de WeChat procesará una serie de mensajes de entrada. Después de un proceso complejo de entrega y distribución de eventos, se pasarán al control de lista correspondiente. El control de lista calcula su siguiente paso en función del contenido del mensaje de entrada. La posición de cada elemento en el marco, actualiza su propio elemento y el contenido del elemento, produciendo así el efecto de deslizamiento de la lista, y se completa el proceso de deslizamiento del círculo de amigos

Resumen del mecanismo de mensajes

Con el caso anterior del mecanismo de mensajes, es lógico comprender la imagen a continuación, como se muestra en los encabezados anteriores.

  1. El mensaje lleva contenido
  2. MessageQueue 存放 Mensaje
  3. Looper envía un mensaje
  4. El manejador maneja el mensaje

Por fin

por envío Mensaje
4. El gestor gestiona el mensaje

Por fin

Los estudiantes que quieran saber más sobre Dachang Interview pueden ** hacer clic aquí para obtener el "Documento de la entrevista" de forma gratuita ** Además, también comparto algunos recursos gratuitos de alta calidad, que incluyen: PDF de aprendizaje de Android + video de arquitectura + notas del código fuente , tecnología de arquitectura avanzada mapa mental avanzado, materiales de temas de entrevistas de desarrollo de Android, materiales de arquitectura avanzada avanzada estos contenidos. Comparte con todo el mundo, es muy adecuado para amigos que tengan entrevistas en un futuro próximo y quieran seguir mejorando en el camino de la tecnología. Ven y consigue materiales de aprendizaje ~

Supongo que te gusta

Origin blog.csdn.net/chayel123/article/details/113931345
Recomendado
Clasificación