24
Construindo aplicações de alto impacto: dicas de otimização e performance Fernando Oliveira | Mobile Applications Developer NYX Knowledge

Android: Aplicações de Alto Impacto - GDG Maceió

Embed Size (px)

Citation preview

Page 1: Android: Aplicações de Alto Impacto - GDG Maceió

Construindo aplicações de alto impacto: dicas de otimização e performanceFernando Oliveira | Mobile Applications DeveloperNYX Knowledge

Page 2: Android: Aplicações de Alto Impacto - GDG Maceió

Fernando Oliveira

Web e Mobile Developer

Skills:

Desenvolvimento backend com Java, Ruby e Python Desenvolvimento mobile nativo para Android e iOS

[email protected] [email protected] +FernandoOliveira3

Page 3: Android: Aplicações de Alto Impacto - GDG Maceió

Mobile Developer Easy Doctor www.easydr.com.br

Page 4: Android: Aplicações de Alto Impacto - GDG Maceió

Partner and Developer Sr. Seguro www.srseguro.com.br

Page 5: Android: Aplicações de Alto Impacto - GDG Maceió
Page 6: Android: Aplicações de Alto Impacto - GDG Maceió

Por que otimizar?

Page 7: Android: Aplicações de Alto Impacto - GDG Maceió

Usuários são impacientes

Page 8: Android: Aplicações de Alto Impacto - GDG Maceió

2% dos usuários vão pensar: Fiz alguma coisa errada!

Os outros 98% dos usuário pensam: Essa aplicação é ruim!

Page 9: Android: Aplicações de Alto Impacto - GDG Maceió

Dispositivos

• Vários tipos de hardware

• Diferentes versões da VM

• Diferentes processadores com diferentes velocidades.

Page 10: Android: Aplicações de Alto Impacto - GDG Maceió

Algumas Causas

• Operações matemáticas pesadas

• I/O

• RedeNunca faça isso na UI

Thread

Page 11: Android: Aplicações de Alto Impacto - GDG Maceió

User Interface

• Informe ao usuário o que está acontecendo!

• Torne suas operações canceláveis!

Page 12: Android: Aplicações de Alto Impacto - GDG Maceió

Algumas dicas de UI

• Lazy Load

• Não impeça o usuário de fazer outras coisas

• User Spinners

• Se demorar mais que 200 milissegundos use um spinner ou ProgressDialog

• Pixel (px) vs. Density-Independent Pixel (dp) vs. Scale-Independent Pixel (sp)

Page 13: Android: Aplicações de Alto Impacto - GDG Maceió

Mais dicas de interface

• A altura da View deve ser de pelo menos 48dp. Espaço aproximado ocupado por um dedo masculino;

• O espaçamento recomendado entre duas Views, por exemplo um TextView e EditText, é de 8dp;

• Os tamanhos de fontes recomendados são 12sp, 14sp, 18sp e 22sp;

• Cores vermelhas e verdes podem ser indistinguíveis para usuários daltônicos. Leve isto em consideração ao planejar o design do seu app.

Page 14: Android: Aplicações de Alto Impacto - GDG Maceió

Regras básicas para um código eficiente

1. Não faça algo que você não precisa fazer!

2. Não aloque memória se você puder evitar isso!

Page 15: Android: Aplicações de Alto Impacto - GDG Maceió

Evite criar objetos desnecessariamente

• Criação de objetos sempre tem um custo.

• Uma grande alocação de objetos acarreta uma maior frequência de execução do Garbage Collector.

Page 16: Android: Aplicações de Alto Impacto - GDG Maceió

Evite criar objetos desnecessariamente

• Um Array de "ints" é muito melhor que um array de “Integers"

• Dois arrays paralelos de “ints" também são bem mais eficientes que um array (int, int).

• Essas regras valem para todos os tipos primitivos.

Page 17: Android: Aplicações de Alto Impacto - GDG Maceió

Evite getters e setters internamente

• Deve-se seguir os padrões de orientação a objetos e ter getters e setters na interface pública mas dentro da classe deve-se sempre acessar os campos diretamente.

• Sem JIT acesso direto as variáveis é cerca de 3x mais rápido que usar um método getter.

• Com JIT esse acesso pode ser até 7x mais rápido.

Page 18: Android: Aplicações de Alto Impacto - GDG Maceió

Use Enhanced For Loop

Page 19: Android: Aplicações de Alto Impacto - GDG Maceió

Considere Package ao invés de acesso privado para classes internas

Page 20: Android: Aplicações de Alto Impacto - GDG Maceió

Evite utilizar números de ponto flutuante

• Floating-points são cerca de 2x mais lentos que Integers em dispositivos Android.

Page 21: Android: Aplicações de Alto Impacto - GDG Maceió

Passive location provider

• O Android consegue aproveitar localizações obtidas por outros aplicativos.

Page 22: Android: Aplicações de Alto Impacto - GDG Maceió

Sempre mensure

• Antes de começar a otimizar certifique-se de que você tem um problema.

• Certifique-se de que é possível ter uma medição eficaz da performance atual, caso contrário você não saberá se as medidas que você tomou surtiram efeito.

Page 23: Android: Aplicações de Alto Impacto - GDG Maceió

Traceview

http://developer.android.com/tools/help/traceview.html