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

Post on 20-Jul-2015

286 views 3 download

Transcript of 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

Fernando Oliveira

Web e Mobile Developer

Skills:

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

fernandooliveira@nyxk.com.br nandooliveira.al@gmail.com +FernandoOliveira3

Mobile Developer Easy Doctor www.easydr.com.br

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

Por que otimizar?

Usuários são impacientes

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

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

Dispositivos

• Vários tipos de hardware

• Diferentes versões da VM

• Diferentes processadores com diferentes velocidades.

Algumas Causas

• Operações matemáticas pesadas

• I/O

• RedeNunca faça isso na UI

Thread

User Interface

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

• Torne suas operações canceláveis!

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)

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.

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!

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.

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.

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.

Use Enhanced For Loop

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

Evite utilizar números de ponto flutuante

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

Passive location provider

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

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.

Traceview

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

Obrigado!

+FernandoOliveira3

fernandooliveira@nyxk.com.br

nandooliveira.al@gmail.com