Tutorial de desarrollo del sistema de telefonía móvil Android! Explicación detallada de las preguntas de la entrevista relacionadas con la tabla hash (hash) en la entrevista BTAJ.

Prefacio

Como todos sabemos, Android es un sistema operativo basado en Linux. Pero para el kernel de Linux, Android es solo una aplicación que se ejecuta en el kernel y no hay diferencia con otras aplicaciones que se ejecutan en el kernel.

Por lo tanto, Android también necesita un entorno en ejecución, y el kernel de Linux necesita cargar los recursos necesarios para que Android Framework se ejecute después de que se complete el inicio. Solo después de inicializar el Framework se puede iniciar la aplicación APK correspondiente.

El marco es tan importante, ¿cómo aprendemos?

Con respecto a cómo aprender el conocimiento del desarrollo de Android Framework, tuve la suerte de recoger esta nota de desarrollo avanzado de Android Framework en manos del ex director técnico de Alibaba. Algunos de los capítulos de conocimiento se publicaron en Zhihu e incluso más de 1000 me gusta. Compartiré contigo hoy.

Esta nota explica los módulos principales del marco, desde la implementación del entorno hasta la aplicación de la tecnología y luego hasta el proyecto real. No solo aprendamos el uso de la tecnología del marco, sino que también aprendamos a usar la arquitectura. para resolver problemas prácticos, desde los más superficiales hasta los más profundos, Analyze Framework en detalle, ¡le permite aprender este conocimiento de manera simple y eficiente!

Separación de procesamiento de datos y carga de vistas

Sabemos que la extracción de datos del control remoto debe ser asincrónica. Después de extraer los datos, podemos arrojarlos rápidamente al VH para su procesamiento. De hecho, también debemos colocar la lógica de procesamiento de datos en procesamiento asincrónico, por lo que después de que el adaptador notifique el cambio, ViewHolder puede hacer datos y ver la lógica de enlace de forma simple y sin presión, como:

mTextView.setText (Html.fromHtml (datos) .toString ());

El método Html.fromHtml (data) aquí puede llevar más tiempo. Si hay varios TextViews, el tiempo será más serio, lo que provocará caídas y congelaciones de fotogramas. Si junta este paso con el subproceso asíncrono de red Desde el punto de vista del usuario, el tiempo de actualización de la red es un poco más largo como máximo.

Optimización de datos

Extraiga datos remotos por paginación, almacene en caché los datos remotos extraídos, mejore la velocidad de carga secundaria; para datos recién agregados o eliminados, use DiffUtil para actualizar los datos localmente en lugar de actualizar ciegamente los datos globalmente.

Optimización de diseño

Reducir el dibujo de transición

Para reducir el nivel de diseño, puede considerar usar una Vista personalizada para reducir el nivel, o configurar el diseño de manera más razonable para reducir el nivel. No se recomienda usar ConstraintLayout en RecyclerView. Muchos desarrolladores ya han informado que usarlo es aún peor Los enlaces relacionados son: ¿ConstraintLayout es tan lento ?, restricintlayout 1.1.1 no funciona bien en la vista de lista.

Reducir el tiempo de inflado del archivo xml

El archivo xml aquí incluye no solo el xml del diseño, sino también el xml del dibujable. El archivo xml infla ItemView mediante operaciones de IO que consumen mucho tiempo, especialmente cuando la probabilidad de reutilización del artículo es muy baja, ya que el tipo aumenta , esto La pérdida causada por inflar es bastante grande. En este momento, podemos usar código para generar el diseño, es decir, el nuevo método View (), siempre que averigüemos la API correspondiente a los atributos de cada nodo en el xml.

Reducir la creación de objetos Ver

Un elemento ligeramente complejo contendrá una gran cantidad de vistas, y la creación de una gran cantidad de vistas también consumirá mucho tiempo, por lo que ItemView debe simplificarse tanto como sea posible; al diseñar el ItemType, diseñe la parte que pueda ser compartido por múltiples ViewTypes tanto como sea posible para diseñar una Vista personalizada para reducir la Vista La construcción y el anidamiento.

otro

Otros no significan que no sean importantes, pero no puedo clasificarlos Algunas operaciones pueden optimizar en gran medida su RecyclerView.

  • Actualice la versión de RecycleView a 25.1.0 y superior para utilizar la función de captación previa; consulte Precarga de datos de RecyclerView.
  • Si la altura del artículo es fija, puede usar RecyclerView.setHasFixedSize (true); para evitar que requestLayout desperdicie recursos;
  • Configure RecyclerView.addOnScrollListener (escucha); para detener la operación de carga durante el proceso de deslizamiento.
  • Si no se requiere animación, puede pasar ((SimpleItemAnimator) rv.getItemAnimator ()). SetSupportsChangeAnimations (false); desactive la animación predeterminada para mejorar la eficiencia.
  • Utilice String.toUpperCase para TextView en lugar de android: textAllCaps = "true".
  • Utilice la vista personalizada de StaticLayout o DynamicLayout para TextView en lugar de esta.
  • Recicle los recursos anulando RecyclerView.onViewRecycled (titular).
  • Use RecycleView.setItemViewCacheSize (tamaño); para aumentar la caché de RecyclerView y use espacio para el tiempo para mejorar la fluidez del desplazamiento.
  • Si el Adaptador de varios RecycledViews es el mismo, por ejemplo, el mismo Adaptador existe en el RecyclerView anidado, puede compartir un RecyclerViewPool configurando RecyclerView.setRecycledViewPool (pool) ;.
  • Configura un oyente para ItemView. No llames a addXxListener para cada Item. Debes compartir un XxListener y realizar diferentes operaciones basadas en el ID, lo que optimiza el consumo de recursos causado por la creación frecuente de objetos.
  • Use getExtraLayoutSpace para aumentar el espacio adicional reservado por RecyclerView (fuera del rango de visualización, debería haber espacio de caché adicional)

Por fin

De hecho, hay muchos puntos de conocimiento en el desarrollo de Android y todavía hay algunas cosas que preguntar en las entrevistas. Por lo tanto, no hay otros trucos para la entrevista, solo observe qué tan bien se prepara para estos puntos de conocimiento. Entonces, cuando salga a una entrevista, es bueno ver qué etapa ha alcanzado en su revisión.

Las preguntas de entrevistas de alta frecuencia compartidas por Tencent, Toutiao, Ali, Meituan, ByteDance y otras compañías en 2019-2021 . El blogger también organizó estos puntos técnicos en videos y PDF (de hecho, tomó mucha más energía de la esperada), incluyendo conocimientos + muchos detalles . Debido al espacio limitado, lo anterior es solo una parte de la imagen para mostrarte.

[ PDF de aprendizaje de Android + video de aprendizaje + documento de entrevista + notas de puntos de conocimiento ]

[Mapa mental de Android (árbol de habilidades)]

¿El conocimiento no es un sistema? Aquí también hay un mapa mental resuelto del aprendizaje avanzado de Android, para que todos puedan consultar una dirección.

[Recursos de aprendizaje en vídeo sobre arquitectura avanzada de Android]

a.

[La imagen del enlace externo se está transfiriendo ... (img-7a34UAUi-1614154687686)]

[Recursos de aprendizaje en vídeo sobre arquitectura avanzada de Android]

** ¡La parte de Android del video es aún más poderosa después de recibir y aprender! ** ¡Entra en la fábrica de BATJ y así sucesivamente (preparación)! Hoy en día, se dice que Internet está frío. De hecho, te subes al auto equivocado y usas menos (habilidades). Si te subes al auto correcto y tu propia habilidad técnica es lo suficientemente fuerte, el costo del reemplazo de la empresa es alto ¿Cómo pudieron despedirlo? ¡Es solo la eliminación del negocio final Curd! Hoy en día, hay una avalancha de programadores junior en el mercado. Este conjunto de tutoriales está dirigido a ingenieros de desarrollo de Android que tienen entre 1 y 6 años. Se encuentran en un período de cuello de botella. Aquellos que quieran superar sus aumentos salariales en el próximo año, avanzado Android intermedio y senior, los arquitectos son aún más importantes para ti. Como un pez en el agua, ¡consíguelo rápidamente!

Supongo que te gusta

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