Páginas filhas
  • DAGROCTA-6659 -DT Implementações para aumento de performance e mitigação de estouro de memória no APP Meu Fitossanitário


01. DADOS GERAIS

Produto:

Meu Fitossanitário

Linha de Produto:


Segmento:

Agroindústria

Módulo:

Fitossanitário

Função:
País:Brasil
Ticket:
Requisito/Story/Issue (informe o requisito relacionado) :DAGROCTA-6659


02. SITUAÇÃO/REQUISITO

Devido ao aumento de informações sincronizadas com o APP, como polígonos de talhões, dentre outras, o aplicativo começou apresentar telas em branco e renderizações de UI incompletas.

03. SOLUÇÃO

Implementações:

  • Redução de memory leaks causados por mapas não limpos adequadamente.
  • Verificação proativa de estado do mapa.
  • Carregar mapas apenas quando necessário.
  • Limpeza de recursos de mapa adequadamente.
  • Recuperação de estados inconsistentes do mapa.
  • Implementação de throttling para movimentação da câmera do mapa.
  • Prevenção de conflitos de estado entre navegações.
  • Timeouts de segurança, evitam travamentos indefinidos.
  • Limpeza de timeouts para liberar recursos rapidamente.
  • Correções de vazamentos de memória em Subscriptions.
  • Correção de possíveis problemas de Polling no SyncStatus.
  • Correções para solucionar violações de performance. Essas violações estavam ligadas a handlers de 'success' e 'setTimeout' que apresentavam tempos de execução acima do recomendado.
  • Otimizações implementadas para resolver problemas de performance no polyfills.js e outras partes do aplicativo.
  • Lista de eventos otimizados: touchstart, touchmove, touchend, touchcancel, wheel,  scroll, resize.
  • stopPropagation no touchstart de componentes das telas, sanando a inutilização caso o usuário  clique e segure em algum componente, por exemplo: variáveis de apontamentos de inspeções, onde podem existir spinners, buttons, textFields, radio buttons, etc..
  • Implementação de debounce(): Evita execuções frequentes de operações custosas.
  • AsyncPool: Processa listas em lotes pequenos para não bloquear a UI.
  • Retry para sincronismos. Duas tentativas caso dê falha no sincronismo pendente (envio e recebimento).
  • Forçar garbage collection se disponível para evitar “crash” do app.
  • Correções e melhorias nos serviços do banco de dados offline (IndexDB).
  • Verificação da utilidade de ícones de polígonos em listas e markers de identificação dentro de polígonos e círculos, pois são criados utilizando canvas, quando há muitos polígonos ou circulos na tela do mapa a criação desses markers de visualização causam uma lentidão bastante considerável, podendo também travar a tela do app, não sendo possível mais sua utilização sem antes fechar a tarefa no dispositivo e abrir o app novamente.