Android: Aplicações de Alto Impacto - GDG Maceió
-
Upload
fernando-oliveira -
Category
Software
-
view
286 -
download
3
Transcript of Android: Aplicações de Alto Impacto - GDG Maceió
![Page 1: Android: Aplicações de Alto Impacto - GDG Maceió](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/1.jpg)
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ó](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/2.jpg)
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 5: Android: Aplicações de Alto Impacto - GDG Maceió](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/5.jpg)
![Page 6: Android: Aplicações de Alto Impacto - GDG Maceió](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/6.jpg)
Por que otimizar?
![Page 7: Android: Aplicações de Alto Impacto - GDG Maceió](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/7.jpg)
Usuários são impacientes
![Page 8: Android: Aplicações de Alto Impacto - GDG Maceió](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/8.jpg)
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ó](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/9.jpg)
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ó](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/10.jpg)
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ó](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/11.jpg)
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ó](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/12.jpg)
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ó](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/13.jpg)
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ó](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/14.jpg)
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ó](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/15.jpg)
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ó](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/16.jpg)
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ó](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/17.jpg)
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ó](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/18.jpg)
Use Enhanced For Loop
![Page 19: Android: Aplicações de Alto Impacto - GDG Maceió](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/19.jpg)
Considere Package ao invés de acesso privado para classes internas
![Page 20: Android: Aplicações de Alto Impacto - GDG Maceió](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/20.jpg)
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ó](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/21.jpg)
Passive location provider
• O Android consegue aproveitar localizações obtidas por outros aplicativos.
![Page 22: Android: Aplicações de Alto Impacto - GDG Maceió](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/22.jpg)
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ó](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/23.jpg)
Traceview
http://developer.android.com/tools/help/traceview.html
![Page 24: Android: Aplicações de Alto Impacto - GDG Maceió](https://reader030.fdocuments.us/reader030/viewer/2022032617/55acd18b1a28ab4f078b45a7/html5/thumbnails/24.jpg)
Obrigado!
+FernandoOliveira3