SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
Android Performance
Felipe Silveira
felipe@ciandt.com
Formado em Engenharia de Computação pela UNIFEI em
2007, trabalho com dispositivos móveis desde que me
formei e com Android desde a versão 1.0 (2009)
26
Por quê?
Quando?
Como?
Preciso contratar algum
serviço?
Que ferramentas usar?
É realmente eficaz?
A minha app precisa?
Que hora é o sorvete?
Por quê?
Quando?
Como?
Que ferramentas usar?
É realmente eficaz?
A minha app precisa?
Que hora é o sorvete?
Preciso contratar algum
serviço?
Por quê?
Frustrado?
É assim que seu usuário se
sente quando sua
aplicação demora para
responder!
Vantagem
Competitiva!
Quando?
"Premature
optimization is the
root of all evil"
Donald Knuth (1974)
Fazer corretamente
Analisar problemas
+
First things first!
Vale a pena colocar um guidão
de carbono de alta
performance...
Na minha Barra forte?
Como?
Medir
Identificar o
problema
Corrigir o
problema
CPU / RAM / Views
Para medir a performance de um cenário de
sua aplicação, pode ser usado o traceview...
… ou o
dmtracedump!
Mas não se esqueça da RAM!
A memória de sua aplicação pode ser
analisada usando o DDMS.
E o MAT pode ser usado para analisar um
dump de memória.
A performance de suas views é
importante!
Faça interfaces leves, simples e
rápidas!
E use o hierarchyviewer!
Sem esquecer do lint!
Boas práticas!
Avoid Creating Unnecessary Objects
Prefer Static Over Virtual
Use Static Final For Constants
Avoid Internal Getters/Setters
Use Enhanced For Loop Syntax
Consider Package Instead of Private Access with Private
Inner Classes
Avoid Using Floating-Point
Know and Use the Libraries
Otimize suas queries!
Faça joins!
Não traga dados que
você não precisa!
Trate o seu DB com carinho
Utilize a estrutura
de dados mais
indicada para cada
caso!
Tome decisões corretas
Coloque na memória apenas o
que é realmente necessário!
Lembre-se que o GC é muito
lento.
Economize Memória
Mas nem sempre é
possível ser rápido...
Use multithreading!
Nenhuma operação lenta
- ou que pode ser lenta-
deve ser feita na main
thread!
Obrigado!
felipe@ciandt.com
felipesilveira.com.br
linkedin.com/in/felipesilveira
twitter.com/felipesilveira
github.com/felipesilveira

Weitere ähnliche Inhalte

Was ist angesagt? (6)

Photoshopagem
PhotoshopagemPhotoshopagem
Photoshopagem
 
Seres extraños...
Seres extraños...Seres extraños...
Seres extraños...
 
Photoshop
PhotoshopPhotoshop
Photoshop
 
úLtimo gr..
úLtimo gr..úLtimo gr..
úLtimo gr..
 
Photoshop especial
Photoshop especialPhotoshop especial
Photoshop especial
 
Photoshop
PhotoshopPhotoshop
Photoshop
 

Andere mochten auch

Andere mochten auch (20)

Tem gente demais mexendo no APP!
Tem gente demais mexendo no APP!Tem gente demais mexendo no APP!
Tem gente demais mexendo no APP!
 
TDC2016POA | Trilha IoT - Como gerenciar a complexidade de um mundo conectado
TDC2016POA | Trilha IoT - Como gerenciar a complexidade de um mundo conectadoTDC2016POA | Trilha IoT - Como gerenciar a complexidade de um mundo conectado
TDC2016POA | Trilha IoT - Como gerenciar a complexidade de um mundo conectado
 
TDC2016SP - Trilha Mobile
TDC2016SP - Trilha MobileTDC2016SP - Trilha Mobile
TDC2016SP - Trilha Mobile
 
Android Core Aula 6 - Desenvolvimento de aplicações Android
Android Core Aula 6 -  Desenvolvimento de aplicações AndroidAndroid Core Aula 6 -  Desenvolvimento de aplicações Android
Android Core Aula 6 - Desenvolvimento de aplicações Android
 
Agora é Android, Tá Safo? - #tasafoemacaocastanhal
Agora é Android, Tá Safo? - #tasafoemacaocastanhalAgora é Android, Tá Safo? - #tasafoemacaocastanhal
Agora é Android, Tá Safo? - #tasafoemacaocastanhal
 
Android annotations
Android annotationsAndroid annotations
Android annotations
 
Android Core Aula 2: Inicialização de um sistema Android
Android Core Aula 2: Inicialização de um sistema AndroidAndroid Core Aula 2: Inicialização de um sistema Android
Android Core Aula 2: Inicialização de um sistema Android
 
Desenvolvimento Android
Desenvolvimento AndroidDesenvolvimento Android
Desenvolvimento Android
 
Boas Práticas em Android
Boas Práticas em AndroidBoas Práticas em Android
Boas Práticas em Android
 
Programação Android Avançada - Acesso Web em Aplicações Android
Programação Android Avançada - Acesso Web em Aplicações AndroidProgramação Android Avançada - Acesso Web em Aplicações Android
Programação Android Avançada - Acesso Web em Aplicações Android
 
TDC2016SP - Trilha Mobile
TDC2016SP - Trilha MobileTDC2016SP - Trilha Mobile
TDC2016SP - Trilha Mobile
 
Android DevConference - SOLID no Android
Android DevConference - SOLID no AndroidAndroid DevConference - SOLID no Android
Android DevConference - SOLID no Android
 
Material design - AndroidosDay 2015
Material design - AndroidosDay 2015Material design - AndroidosDay 2015
Material design - AndroidosDay 2015
 
Aumentando a produtividade com Android Libs
Aumentando a produtividade com Android LibsAumentando a produtividade com Android Libs
Aumentando a produtividade com Android Libs
 
Android DevConference - Firebase para desenvolvedores
Android DevConference - Firebase para desenvolvedoresAndroid DevConference - Firebase para desenvolvedores
Android DevConference - Firebase para desenvolvedores
 
TDC2016SP - Trilha Mobile
TDC2016SP - Trilha MobileTDC2016SP - Trilha Mobile
TDC2016SP - Trilha Mobile
 
Android DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps AndroidAndroid DevConference - Indo além com automação de testes de apps Android
Android DevConference - Indo além com automação de testes de apps Android
 
Implementando acessibilidade em aplicações Android
Implementando acessibilidade em aplicações AndroidImplementando acessibilidade em aplicações Android
Implementando acessibilidade em aplicações Android
 
Tudo sobre listas no android
Tudo sobre listas no androidTudo sobre listas no android
Tudo sobre listas no android
 
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
Android Core Aula 7 - Aplicações (Services, Broadcast Receivers, NDK/JNI)
 

Ähnlich wie Android performance - Construindo aplicações rápidas de verdade

A importancia de IHC no desenvolvimento de software
A importancia de IHC no desenvolvimento de softwareA importancia de IHC no desenvolvimento de software
A importancia de IHC no desenvolvimento de software
Flavia Negrao
 
Software fácil de usar não é difícil de programar
Software fácil de usar não é difícil de programarSoftware fácil de usar não é difícil de programar
Software fácil de usar não é difícil de programar
Harlley Oliveira
 

Ähnlich wie Android performance - Construindo aplicações rápidas de verdade (20)

Work shop android interplan rj_231011
Work shop android interplan rj_231011Work shop android interplan rj_231011
Work shop android interplan rj_231011
 
Application Insights - Monitore a sua aplicação em tempo real
Application Insights - Monitore a sua aplicação em tempo realApplication Insights - Monitore a sua aplicação em tempo real
Application Insights - Monitore a sua aplicação em tempo real
 
Webinar Usabilidade no E-commerce
Webinar Usabilidade no E-commerceWebinar Usabilidade no E-commerce
Webinar Usabilidade no E-commerce
 
Xamarin UI Test e VS Mobile Center
Xamarin UI Test e VS Mobile CenterXamarin UI Test e VS Mobile Center
Xamarin UI Test e VS Mobile Center
 
App Inventor: Eu escolho você!
App Inventor: Eu escolho você!App Inventor: Eu escolho você!
App Inventor: Eu escolho você!
 
Experiência do usuário
Experiência do usuárioExperiência do usuário
Experiência do usuário
 
Palestra IFG - Desenvolvimento Front-end
Palestra IFG - Desenvolvimento Front-endPalestra IFG - Desenvolvimento Front-end
Palestra IFG - Desenvolvimento Front-end
 
A importancia de IHC no desenvolvimento de software
A importancia de IHC no desenvolvimento de softwareA importancia de IHC no desenvolvimento de software
A importancia de IHC no desenvolvimento de software
 
Android Aprendiz
Android AprendizAndroid Aprendiz
Android Aprendiz
 
Como construir uma boa realidade aumentada
Como construir uma boa realidade aumentadaComo construir uma boa realidade aumentada
Como construir uma boa realidade aumentada
 
DevOps aplicado a Mobile: Challenge Accepted
DevOps aplicado a Mobile: Challenge AcceptedDevOps aplicado a Mobile: Challenge Accepted
DevOps aplicado a Mobile: Challenge Accepted
 
Thunkable
ThunkableThunkable
Thunkable
 
UX.. Vale a pena?
UX.. Vale a pena?UX.. Vale a pena?
UX.. Vale a pena?
 
DevOps e Apps Mobile: Você realmente se importa?
DevOps e Apps Mobile: Você realmente se importa?DevOps e Apps Mobile: Você realmente se importa?
DevOps e Apps Mobile: Você realmente se importa?
 
Ferramentas e Apps Educação
Ferramentas e Apps EducaçãoFerramentas e Apps Educação
Ferramentas e Apps Educação
 
Os Desafios do Design Mobile - Jun/2012
Os Desafios do Design Mobile - Jun/2012Os Desafios do Design Mobile - Jun/2012
Os Desafios do Design Mobile - Jun/2012
 
Lidar com Expectativas é a melhor forma de garantir a Experiência
Lidar com Expectativas é a melhor forma de garantir a ExperiênciaLidar com Expectativas é a melhor forma de garantir a Experiência
Lidar com Expectativas é a melhor forma de garantir a Experiência
 
Business: from intelligence to learning
Business: from intelligence to learningBusiness: from intelligence to learning
Business: from intelligence to learning
 
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
Apresentação Meetup Faccilita Corretor Google Brasil - 01/03/2016
 
Software fácil de usar não é difícil de programar
Software fácil de usar não é difícil de programarSoftware fácil de usar não é difícil de programar
Software fácil de usar não é difícil de programar
 

Kürzlich hochgeladen

Kürzlich hochgeladen (6)

ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Android performance - Construindo aplicações rápidas de verdade