Top Banner
Desenvolvendo aplicativos nativos Exemplos, casos e conceitos David Tiago Conceição @davidtiagocon [email protected]
81

Desenvolvendo aplicativos nativos

Jul 06, 2015

Download

Software

Slides da palestra apresentada no The Developer's Conference 2014 em Florianópolis, trilha Android
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
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!