Performance de aplicativos
Dicas, exemplos e conceitos
David Tiago Conceição@davidtiagocon
#PerfAndroidTDC
More computing sins are committed in the name of efficiency (without necessarily achieving it) than for any
other single reason....William A. Wulf
Effective Java: Programming Language GuideJoshua Bloch - 2001
Otimização
Ciclos de melhoria de performance
1. Reunir informações2. Adquirir uma visão3. Ações e ajustes
Android Performance - Udacityudacity.com/course/android-performance--ud825
Performance de renderização
● Novo quadro a cada 16ms● “Skipped frame”
○ Visível no ADB Log
Performance de renderização
● Liberar a main thread● Multithreading
○ AsyncTask○ Handler○ Thread○ IntentService
Performance de renderização
● Programação reativa● Event Buses
Performance de renderização
● Callbacks na main thread
Performance de renderização
Performance de renderização
● Operações de I/O
Performance de renderização
Medindo tempos
● Depuração GPU
Performance de renderização
● Overdraw
Overdraw
● Detectando
Overdraw
● Sobreposição de planos de fundo● Hierarquia de layouts
Analisando layouts
● Hierarchy viewer
Analisando layouts
Analisando layouts
Analisando layouts
Analisando layouts
Memória
Android Performance - Udacity udacity.com/course/android-performance--ud825
Memória
Android Performance - Udacity udacity.com/course/android-performance--ud825
Memória
● LeakCanary○ github.com/square/leakcanary
Memória e Imagens
● Conversão em bitmaps
Memória e Imagens
● 3264x2448● 3,2MB
Memória e Imagens
Memória e Imagens
Memória e Imagens
Memória e Imagens
Memória e Imagens
Memória e Imagens
Memória
● Seja um bom cidadão○ Ciclo de vida○ onTrimMemory(level)
Network Performance
● Antecipação de transferências● Segmentação das transferências
Network Performance
● Formatos e protocolos enxutos○ HTTP/2 e SPDY○ WebP
Network Performance
● Libs○ Volley○ OkHTTP○ Retrofit
OBRIGADO!David Tiago Conceição
@[email protected]
#PerfAndroidTDC