SDK de desenvolvimento do Android! Este é um guia de revisão para desenvolvedores Android, materiais de aprendizagem avançados!

Prefácio

A P&D móvel está em alta, e mais e mais pessoas estão começando a aprender o desenvolvimento do Android. No entanto, muitas pessoas acham que é fácil começar e que é difícil crescer. Elas estão um tanto confusas quanto ao futuro. Não sabem como melhorar suas habilidades e o que precisa ser adicionado à próxima fase. O mercado também está falando principalmente de gráficos de conhecimento, sem um sistema e um senso de ritmo de crescimento. Eu, por meio deste, compilar um caminho avançado para P&D Android, espero que possa ser útil para todos.

Aqui, divido o cerco em quatro estágios: elementar, intermediário, avançado e sênior, e faço requisitos para P&D e recursos de design, uso de ferramentas, princípios de sistema e arquitetura.

ByteDance fez esta pergunta em três lados. Eu resolvi isso aqui. Espero que possa ajudar a todos. Bem-vindo para verificar e preencher as vagas.

Separação de processamento de dados e visualização de carregamento

Sabemos que extrair dados do remoto deve ser assíncrono. Depois de extrairmos os dados, podemos enviar rapidamente os dados para o VH para processamento. Na verdade, também devemos colocar a lógica de processamento de dados em processamento assíncrono, para que após a notificação do adaptador a mudança, ViewHolder pode fazer dados e visualizar a lógica de ligação de forma simples e sem pressão, como:

mTextView.setText(Html.fromHtml(data).toString())

O método Html.fromHtml (data) aqui pode ser mais demorado. Se houver vários TextViews, o tempo será mais sério, o que causará quedas e congelamentos de quadros. Se você colocar esta etapa junto com o thread assíncrono da rede Do ponto de vista do usuário, o tempo de atualização da rede é um pouco mais longo, no máximo.

Otimização de dados

Extraia dados remotos por paginação, armazene em cache os dados remotos extraídos, melhore a velocidade do carregamento secundário; para dados recém-adicionados ou excluídos, use DiffUtil para atualizar os dados localmente em vez de atualizar cegamente os dados globalmente.

Otimização de layout

Reduza o desenho de transição

Para reduzir o nível de layout, você pode considerar o uso de uma Visualização personalizada para reduzir o nível ou definir o layout de forma mais razoável para reduzir o nível. Não é recomendado usar ConstraintLayout no RecyclerView. Muitos desenvolvedores já relataram que usá-lo é ainda pior Os links relacionados são: ConstraintLayout tão lento ?, constraintlayout 1.1.1 não funciona bem em listview.

Reduz o tempo de aumento do arquivo xml

O arquivo xml aqui inclui não apenas o xml do layout, mas também o xml do drawable. O arquivo xml aumenta o ItemView por meio de operações IO demoradas, especialmente quando a probabilidade de reutilização do item é muito baixa, conforme o tipo aumenta , este A perda causada pelo inflate é bastante grande. Neste momento, podemos usar o código para gerar o layout, ou seja, o novo método View (), desde que descubramos a API correspondente aos atributos de cada nó em o xml.

Reduz a criação de objetos View

Um item ligeiramente complexo conterá um grande número de visualizações, e a criação de um grande número de visualizações também consumirá muito tempo, então o ItemView deve ser simplificado o máximo possível; ao projetar o ItemType, projete a parte que pode ser compartilhado por múltiplos ViewTypes tanto quanto possível para projetar uma visualização personalizada para reduzir a construção e o aninhamento da visualização.

outro

Outros não significam que não sejam importantes, mas não posso classificá-los.Algumas operações podem otimizar muito seu RecyclerView.

  • Atualize a versão do RecycleView para 25.1.0 e superior para usar a função Prefetch; consulte a pré-busca de dados do RecyclerView.
  • Se a altura do item for fixa, você pode usar RecyclerView.setHasFixedSize (true); para evitar o desperdício de recursos de requestLayout;
  • Defina RecyclerView.addOnScrollListener (listener); para interromper a operação de carregamento durante o processo de deslizamento.
  • Se a animação não for necessária, você pode passar ((SimpleItemAnimator) rv.getItemAnimator ()). SetSupportsChangeAnimations (false); desligar a animação padrão para melhorar a eficiência.
  • Use String.toUpperCase para TextView em vez de android: textAllCaps = "true".
  • Em vez disso, use a visualização personalizada de StaticLayout ou DynamicLayout para TextView.
  • Recicle recursos substituindo RecyclerView.onViewRecycled (holder).
  • Use RecycleView.setItemViewCacheSize (size); para aumentar o cache de RecyclerView e use espaço para tempo para melhorar a suavidade da rolagem.
  • Se o adaptador de vários RecycledViews for o mesmo, por exemplo, o mesmo adaptador existe no RecyclerView aninhado, você pode compartilhar um RecycledViewPool definindo RecyclerView.setRecycledViewPool (pool) ;.
  • Configure um ouvinte para ItemView. Não chame addXxListener para cada item. Você deve compartilhar um XxListener e executar diferentes operações com base no ID, o que otimiza o consumo de recursos causado pela criação frequente de objetos.
  • Use getExtraLayoutSpace para aumentar o espaço extra reservado pelo RecyclerView (fora do intervalo de exibição, deve haver espaço de cache extra), conforme mostrado abaixo:
new LinearLayoutManager(this) { 
@Override protected int getExtraLayoutSpace(RecyclerView.State state) {
 return size; 
} 
};

Finalmente

Levando em conta a extensão do artigo, fiz essas perguntas e respostas, bem como as perguntas que encontrei em muitos anos de entrevistas, e alguns materiais de entrevista em documentos PDF. Se você precisar de um amigo, pode me enviar um e-mail em particular [Entrevista ] para recebê-lo de graça

Clique aqui para receber um resumo dos materiais de entrevista do Android

mg-lbxroUhK-1614050724720)]

[A imagem do link externo está sendo transferida ... (img-jHECy98f-1614050724723)]

Amigos que curtirem podem seguir, encaminhar e curtir obrigado!

Acho que você gosta

Origin blog.csdn.net/a120464/article/details/113978447
Recomendado
Clasificación