YOU ARE DOWNLOADING DOCUMENT

Please tick the box to continue:

Transcript
Page 1: Desenvolvendo aplicativos nativos

Desenvolvendo aplicativos nativos

Exemplos, casos e conceitos

David Tiago Conceição

@davidtiagocon

[email protected]

Page 2: Desenvolvendo aplicativos nativos

Android

Crescimento sem precedentesNúmero de dispositivos

Número de ativações

Número de aplicativos

Page 3: Desenvolvendo aplicativos nativos

Android

Experiência de uso

Page 4: Desenvolvendo aplicativos nativos

Roteiro

ConceitoAndroid SDKCódigo Java

RecursosImageViewAdapters

Informações externasServiços externos

Page 5: Desenvolvendo aplicativos nativos

Performance

Elemento da experiência de uso

Page 6: Desenvolvendo aplicativos nativos

Aumentar a Performance

Diminuir o tempo que o usuário leva para alcançar seus objetivos

Page 7: Desenvolvendo aplicativos nativos

Performance

Impacto direto na experiência de usoAplicativos lentos

Aplicativos pesados

Aplicativos complexos

Page 8: Desenvolvendo aplicativos nativos

Android SDK

Page 9: Desenvolvendo aplicativos nativos

Android SDK

AtualizaçõesBibliotecas

Build System

Page 10: Desenvolvendo aplicativos nativos

Android SDK

AtualizaçõesTarget

Page 11: Desenvolvendo aplicativos nativos

Android SDK

AtualizaçõesTarget

Page 12: Desenvolvendo aplicativos nativos

Android SDK

WarningsBuild

Lint

Page 13: Desenvolvendo aplicativos nativos

Código Java

Page 14: Desenvolvendo aplicativos nativos

Código Java

Código eficiente

Page 15: Desenvolvendo aplicativos nativos

Código Java

Getters & Setters

Page 16: Desenvolvendo aplicativos nativos

Código Java

IteraçõesEnhanced for

Page 17: Desenvolvendo aplicativos nativos

Código Java

IteraçõesLimites

Page 18: Desenvolvendo aplicativos nativos

Código Java

IteraçõesLimites

Page 19: Desenvolvendo aplicativos nativos

Código Java

IteraçõesLimites

Page 20: Desenvolvendo aplicativos nativos

Código Java

IteraçõesLimites

Page 21: Desenvolvendo aplicativos nativos

Código Java

Métodos static

Page 22: Desenvolvendo aplicativos nativos

Código Java

Métodos staticCom cuidado

Page 23: Desenvolvendo aplicativos nativos

Código Java

Mitos

Page 24: Desenvolvendo aplicativos nativos

Código Java

Mitos Acesso aos membros

Hierarquia de classes

Enum

Page 25: Desenvolvendo aplicativos nativos

Código Java

Mitos Acesso aos membros

Hierarquia de classes

Enum

Compilador JIT

Page 26: Desenvolvendo aplicativos nativos

Código Java

Estruturas de dadosTipos apropriados

Page 27: Desenvolvendo aplicativos nativos

Código Java

Estruturas de dadosTipos apropriados

Page 28: Desenvolvendo aplicativos nativos

Código Java

Estruturas de dadosTipos apropriados

Page 29: Desenvolvendo aplicativos nativos

Código Java

Estruturas de dadosInicialização de listas

Page 30: Desenvolvendo aplicativos nativos

Código Java

Estruturas de dadosCuidado com o autoboxing

Page 31: Desenvolvendo aplicativos nativos

Código Java

BuildersStringBuilder

Page 32: Desenvolvendo aplicativos nativos

Código Java

ContextAtenção aos vazamentos de memória

Page 33: Desenvolvendo aplicativos nativos

Código Java

Escopo de variáveis

Page 34: Desenvolvendo aplicativos nativos

Código Java

Garbage collectorAtenção especial Android 2.3 e anteriores

Page 35: Desenvolvendo aplicativos nativos

Código Java

Multitarefa

Page 36: Desenvolvendo aplicativos nativos

Código Java

Multitarefa

Page 37: Desenvolvendo aplicativos nativos

Código Java

Multitarefa

Page 38: Desenvolvendo aplicativos nativos

Código Java

Multitarefa

Page 39: Desenvolvendo aplicativos nativos

Código Java

Multitarefa

Page 40: Desenvolvendo aplicativos nativos

Código Java

Conheça as bibliotecas

Page 41: Desenvolvendo aplicativos nativos

Código Java

Conheça as bibliotecas

Page 42: Desenvolvendo aplicativos nativos

Recursos

Page 43: Desenvolvendo aplicativos nativos

Recursos

Layouts<include>

<merge>

Page 44: Desenvolvendo aplicativos nativos

Recursos

Layouts<include>

http://developer.android.com/training/improving-layouts/reusing-layouts.html

Page 45: Desenvolvendo aplicativos nativos

Recursos

Layouts<include>

http://developer.android.com/training/improving-layouts/reusing-layouts.html

Page 46: Desenvolvendo aplicativos nativos

Recursos

LayoutsMaior profundidade = menor performance

Page 47: Desenvolvendo aplicativos nativos

Recursos

Layouts

Page 48: Desenvolvendo aplicativos nativos

Recursos

Layouts

Page 49: Desenvolvendo aplicativos nativos

Analisando layouts

Perfil renderização

Page 50: Desenvolvendo aplicativos nativos

Analisando layouts

Perfil renderização

LinearLayout RelativeLayout

Page 51: Desenvolvendo aplicativos nativos

Analisando layouts

Overdraw

Page 52: Desenvolvendo aplicativos nativos

Analisando layouts

OverdrawLinearLayout RelativeLayou

t

Page 53: Desenvolvendo aplicativos nativos

Recursos

LayoutsMaior profundidade geralmente significa menor performance

Page 54: Desenvolvendo aplicativos nativos

ImageView

Page 55: Desenvolvendo aplicativos nativos

ImageView

Bitmaps são pesados!

Page 56: Desenvolvendo aplicativos nativos

ImageView

BitmapsOcupam muita memória

Page 57: Desenvolvendo aplicativos nativos

ImageView

BitmapsOcupam muita memória

Page 58: Desenvolvendo aplicativos nativos

ImageView

BitmapsOcupam muita memória

Page 59: Desenvolvendo aplicativos nativos

ImageView

BitmapsOcupam muita memória

Page 60: Desenvolvendo aplicativos nativos

ImageView

Exibição dinâmica

Page 61: Desenvolvendo aplicativos nativos

ImageView

Cache local

Page 62: Desenvolvendo aplicativos nativos

ImageView

Cache em memória

Page 63: Desenvolvendo aplicativos nativos

Adapters

Page 64: Desenvolvendo aplicativos nativos

Adapters

Reutilizar layoutsOtimização com ViewHolder

Page 65: Desenvolvendo aplicativos nativos

Adapters

Reutilizar layoutsOtimização com ViewHolder

Page 66: Desenvolvendo aplicativos nativos

Adapters

Não sobrecarregue o getView!

Page 67: Desenvolvendo aplicativos nativos

Informações externas

Protocolos leves

Page 68: Desenvolvendo aplicativos nativos

Informações externas

Agilize a exibiçãoSeparando informações básicas das pesadas

Page 69: Desenvolvendo aplicativos nativos

Informações externas

Agilize a exibiçãoLazy loading

Page 70: Desenvolvendo aplicativos nativos

Informações externas

Agilize a exibiçãoCache

Page 71: Desenvolvendo aplicativos nativos

Serviços Externos

LocalizaçãoFused Location Provider

Page 72: Desenvolvendo aplicativos nativos

Serviços Externos

Cuidado ao monitorar a localização

Page 73: Desenvolvendo aplicativos nativos

Serviços Externos

Cuidado ao monitorar a localizaçãoTempo necessário

Page 74: Desenvolvendo aplicativos nativos

Serviços Externos

Cuidado ao monitorar a localizaçãoTempo necessário

Prioridade

Page 75: Desenvolvendo aplicativos nativos

Serviços Externos

Cuidado ao monitorar a localizaçãoTempo necessário

Prioridade

Substituição por geofencing

Page 76: Desenvolvendo aplicativos nativos

Serviços Externos

Reconhecimento de atividade

Page 77: Desenvolvendo aplicativos nativos

Serviços Externos

Reconhecimento de atividadeMudança de temporizadores

Page 78: Desenvolvendo aplicativos nativos

Serviços Externos

Reconhecimento de atividadeMudança de temporizadores

Antecipação de ações

Page 79: Desenvolvendo aplicativos nativos

Serviços Externos

Push notificationsFuja do pooling!

Page 80: Desenvolvendo aplicativos nativos

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: Desenvolvendo aplicativos nativos

David Tiago Conceição

@davidtiagocon

[email protected]

facebook.com/davidtiagocon

LinkedIn: David Tiago Conceição

Obrigado!


Related Documents