Page 1
Desenvolvendo aplicativos nativos
Exemplos, casos e conceitos
David Tiago Conceição
@davidtiagocon
[email protected]
Page 2
Android
Crescimento sem precedentesNúmero de dispositivos
Número de ativações
Número de aplicativos
Page 3
Android
Experiência de uso
Page 4
Roteiro
ConceitoAndroid SDKCódigo Java
RecursosImageViewAdapters
Informações externasServiços externos
Page 5
Performance
Elemento da experiência de uso
Page 6
Aumentar a Performance
Diminuir o tempo que o usuário leva para alcançar seus objetivos
Page 7
Performance
Impacto direto na experiência de usoAplicativos lentos
Aplicativos pesados
Aplicativos complexos
Page 9
Android SDK
AtualizaçõesBibliotecas
Build System
Page 10
Android SDK
AtualizaçõesTarget
Page 11
Android SDK
AtualizaçõesTarget
Page 12
Android SDK
WarningsBuild
Lint
Page 14
Código Java
Código eficiente
Page 15
Código Java
Getters & Setters
Page 16
Código Java
IteraçõesEnhanced for
Page 17
Código Java
IteraçõesLimites
Page 18
Código Java
IteraçõesLimites
Page 19
Código Java
IteraçõesLimites
Page 20
Código Java
IteraçõesLimites
Page 21
Código Java
Métodos static
Page 22
Código Java
Métodos staticCom cuidado
Page 23
Código Java
Mitos
Page 24
Código Java
Mitos Acesso aos membros
Hierarquia de classes
Enum
Page 25
Código Java
Mitos Acesso aos membros
Hierarquia de classes
Enum
Compilador JIT
Page 26
Código Java
Estruturas de dadosTipos apropriados
Page 27
Código Java
Estruturas de dadosTipos apropriados
Page 28
Código Java
Estruturas de dadosTipos apropriados
Page 29
Código Java
Estruturas de dadosInicialização de listas
Page 30
Código Java
Estruturas de dadosCuidado com o autoboxing
Page 31
Código Java
BuildersStringBuilder
Page 32
Código Java
ContextAtenção aos vazamentos de memória
Page 33
Código Java
Escopo de variáveis
Page 34
Código Java
Garbage collectorAtenção especial Android 2.3 e anteriores
Page 35
Código Java
Multitarefa
Page 36
Código Java
Multitarefa
Page 37
Código Java
Multitarefa
Page 38
Código Java
Multitarefa
Page 39
Código Java
Multitarefa
Page 40
Código Java
Conheça as bibliotecas
Page 41
Código Java
Conheça as bibliotecas
Page 43
Recursos
Layouts<include>
<merge>
Page 44
Recursos
Layouts<include>
http://developer.android.com/training/improving-layouts/reusing-layouts.html
Page 45
Recursos
Layouts<include>
http://developer.android.com/training/improving-layouts/reusing-layouts.html
Page 46
Recursos
LayoutsMaior profundidade = menor performance
Page 49
Analisando layouts
Perfil renderização
Page 50
Analisando layouts
Perfil renderização
LinearLayout RelativeLayout
Page 51
Analisando layouts
Overdraw
Page 52
Analisando layouts
OverdrawLinearLayout RelativeLayou
t
Page 53
Recursos
LayoutsMaior profundidade geralmente significa menor performance
Page 55
ImageView
Bitmaps são pesados!
Page 56
ImageView
BitmapsOcupam muita memória
Page 57
ImageView
BitmapsOcupam muita memória
Page 58
ImageView
BitmapsOcupam muita memória
Page 59
ImageView
BitmapsOcupam muita memória
Page 60
ImageView
Exibição dinâmica
Page 61
ImageView
Cache local
Page 62
ImageView
Cache em memória
Page 64
Adapters
Reutilizar layoutsOtimização com ViewHolder
Page 65
Adapters
Reutilizar layoutsOtimização com ViewHolder
Page 66
Adapters
Não sobrecarregue o getView!
Page 67
Informações externas
Protocolos leves
Page 68
Informações externas
Agilize a exibiçãoSeparando informações básicas das pesadas
Page 69
Informações externas
Agilize a exibiçãoLazy loading
Page 70
Informações externas
Agilize a exibiçãoCache
Page 71
Serviços Externos
LocalizaçãoFused Location Provider
Page 72
Serviços Externos
Cuidado ao monitorar a localização
Page 73
Serviços Externos
Cuidado ao monitorar a localizaçãoTempo necessário
Page 74
Serviços Externos
Cuidado ao monitorar a localizaçãoTempo necessário
Prioridade
Page 75
Serviços Externos
Cuidado ao monitorar a localizaçãoTempo necessário
Prioridade
Substituição por geofencing
Page 76
Serviços Externos
Reconhecimento de atividade
Page 77
Serviços Externos
Reconhecimento de atividadeMudança de temporizadores
Page 78
Serviços Externos
Reconhecimento de atividadeMudança de temporizadores
Antecipação de ações
Page 79
Serviços Externos
Push notificationsFuja do pooling!
Page 80
Leitura Futura
Sending Operations to Multiple Threadshttp://developer.android.com/training/multiple-threads/index.html
Best Practices for Performancehttp://developer.android.com/training/best-performance.html
Android Performance Case Studyhttp://www.curious-creature.org/docs/android-performance-case-study-1.html
Displaying Bitmaps Efficientlyhttp://developer.android.com/training/displaying-bitmaps/index.html
Page 81
David Tiago Conceição
@davidtiagocon
[email protected]
facebook.com/davidtiagocon
LinkedIn: David Tiago Conceição
Obrigado!