Download - Desenvolvendo aplicativos nativos

Transcript

Desenvolvendo aplicativos nativos

Exemplos, casos e conceitos

David Tiago Conceição

@davidtiagocon

[email protected]

Android

Crescimento sem precedentesNúmero de dispositivos

Número de ativações

Número de aplicativos

Android

Experiência de uso

Roteiro

ConceitoAndroid SDKCódigo Java

RecursosImageViewAdapters

Informações externasServiços externos

Performance

Elemento da experiência de uso

Aumentar a Performance

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

Performance

Impacto direto na experiência de usoAplicativos lentos

Aplicativos pesados

Aplicativos complexos

Android SDK

Android SDK

AtualizaçõesBibliotecas

Build System

Android SDK

AtualizaçõesTarget

Android SDK

AtualizaçõesTarget

Android SDK

WarningsBuild

Lint

Código Java

Código Java

Código eficiente

Código Java

Getters & Setters

Código Java

IteraçõesEnhanced for

Código Java

IteraçõesLimites

Código Java

IteraçõesLimites

Código Java

IteraçõesLimites

Código Java

IteraçõesLimites

Código Java

Métodos static

Código Java

Métodos staticCom cuidado

Código Java

Mitos

Código Java

Mitos Acesso aos membros

Hierarquia de classes

Enum

Código Java

Mitos Acesso aos membros

Hierarquia de classes

Enum

Compilador JIT

Código Java

Estruturas de dadosTipos apropriados

Código Java

Estruturas de dadosTipos apropriados

Código Java

Estruturas de dadosTipos apropriados

Código Java

Estruturas de dadosInicialização de listas

Código Java

Estruturas de dadosCuidado com o autoboxing

Código Java

BuildersStringBuilder

Código Java

ContextAtenção aos vazamentos de memória

Código Java

Escopo de variáveis

Código Java

Garbage collectorAtenção especial Android 2.3 e anteriores

Código Java

Multitarefa

Código Java

Multitarefa

Código Java

Multitarefa

Código Java

Multitarefa

Código Java

Multitarefa

Código Java

Conheça as bibliotecas

Código Java

Conheça as bibliotecas

Recursos

Recursos

Layouts<include>

<merge>

Recursos

Layouts<include>

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

Recursos

Layouts<include>

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

Recursos

LayoutsMaior profundidade = menor performance

Recursos

Layouts

Recursos

Layouts

Analisando layouts

Perfil renderização

Analisando layouts

Perfil renderização

LinearLayout RelativeLayout

Analisando layouts

Overdraw

Analisando layouts

OverdrawLinearLayout RelativeLayou

t

Recursos

LayoutsMaior profundidade geralmente significa menor performance

ImageView

ImageView

Bitmaps são pesados!

ImageView

BitmapsOcupam muita memória

ImageView

BitmapsOcupam muita memória

ImageView

BitmapsOcupam muita memória

ImageView

BitmapsOcupam muita memória

ImageView

Exibição dinâmica

ImageView

Cache local

ImageView

Cache em memória

Adapters

Adapters

Reutilizar layoutsOtimização com ViewHolder

Adapters

Reutilizar layoutsOtimização com ViewHolder

Adapters

Não sobrecarregue o getView!

Informações externas

Protocolos leves

Informações externas

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

Informações externas

Agilize a exibiçãoLazy loading

Informações externas

Agilize a exibiçãoCache

Serviços Externos

LocalizaçãoFused Location Provider

Serviços Externos

Cuidado ao monitorar a localização

Serviços Externos

Cuidado ao monitorar a localizaçãoTempo necessário

Serviços Externos

Cuidado ao monitorar a localizaçãoTempo necessário

Prioridade

Serviços Externos

Cuidado ao monitorar a localizaçãoTempo necessário

Prioridade

Substituição por geofencing

Serviços Externos

Reconhecimento de atividade

Serviços Externos

Reconhecimento de atividadeMudança de temporizadores

Serviços Externos

Reconhecimento de atividadeMudança de temporizadores

Antecipação de ações

Serviços Externos

Push notificationsFuja do pooling!

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

David Tiago Conceição

@davidtiagocon

[email protected]

facebook.com/davidtiagocon

LinkedIn: David Tiago Conceição

Obrigado!