SlideShare uma empresa Scribd logo
1 de 34
Baixar para ler offline
Escreva sua App Android sem gastar energia
George H. Silva
Android Community Manager

Globalcode – Open4education
Agenda
Por que economizar?
Quem são os gastões
Hardware
Wakelocks

Medindo
Consumo de Energia
Identificando consumo da GPU

Economizando
Android Intel Inside
O que não muda
Emulador
Novidades

Conclusão

Globalcode – Open4education
Lembre-se!
Wakelocks
Pensou em emulador?
HAXM

Pensou em desempenho gráfico
Intel GPA

Globalcode – Open4education
Por que economizar?
Experiência do Usuário
Sucesso da sua App

Globalcode – Open4education
Fato da vida real

Globalcode – Open4education
Quem são os gastões?
Tela
Processador
GPU
I/O
Disco?
Rede

GPS
Sua App

Globalcode – Open4education
Tela

Globalcode – Open4education
GPS

Globalcode – Open4education
Medindo
Defina uma metodologia para sua App
Dicas:
Use as mesmas pré condições
Entre em modo avião (operadora)
Deixe o brilho da tela no mínimo
Use sempre o mesmo dispositivo
Tenha o mínimo de Apps instaladas
Não use o adb por conexão USB
tcp/ip connection (precise de acesso root )

Globalcode – Open4education
Medindo 2
/sys/class/power_supply/battery/uevent datafile
Informações disponíveis
POWER_SUPPLY_NAME
POWER_SUPPLY_STATUS
POWER_SUPPLY_VOLTAGE_NOW
POWER_SUPPLY_CURRENT_NOW
POWER_SUPPLY_CHARGE_FULL
POWER_SUPPLY_CHARGE_NOW

“usb”, “ac_charger”
0/1
uV / mV
uA

Watt-Hr
Watt-Hr

Globalcode – Open4education
Medindo 3

Globalcode – Open4education
Ciclo de desenvolvimento
Codificando sua aplicação

Debug & Teste

Otimize o consumo

Otimize o desempenho

Globalcode – Open4education
Economizando
Por onde começar?
Por quem gasta mais
O que for mais rápido ou fácil de fazer

Globalcode – Open4education
Ciclo de Vida

Globalcode – Open4education
Wakelock
Android assume que se a tela não está ligada, a
CPU também não precisa estar
Wakelock é uma “brecha legal” dentro da política
agressiva de economia de energia

Globalcode – Open4education
Como são usados
Aplicação Ação feita
Todas

Serviço que pegou
Wakelock

Toque em qualquer UI Widget PowerManagerService
(Botão ou ListView, etc)

Comportamento
Solicita e libera o lock
após 5 segundos

Maps /
Lançar a App de Maps ou
Navegação definer direções para
navegação

gps-lock

Mantém o lock enquanto
usa GPS

YouTube

Assistir à um vídeo

PowerManagerService

Wakelock mantido
durante o período em que
o video é reproduzido

Music
Player

Tocar uma musica

PowerManagerService

Wakelock mantido
durante o período em que
a música toca

Globalcode – Open4education
Wakelock
Tipos
PARTIAL_WAKE_LOCK

CPU Tela
On Off

Teclado
Off

SCREEN_DIM_WAKE_LOCK

On

Dim

Off

SCREEN_BRIGHT_WAKE_LOCK On

Bright

Off

FULL_WAKE_LOCK

Bright

Bright

Flags
ACQUIRE_CAUSES_WAKEUP

ON_AFTER_RELEASE

On

Descrição
Force a tela e teclado a serem
ligados assim que o wakelock
for solicitado
Reinicia o timeout para que a
tela seja desligada após a
liberação do wakelock

Globalcode – Open4education
Permissões necessárias
AndroidManifest.xml:

“Prevent phone from sleeping.”

Globalcode – Open4education
Wakelock – demo

http://software.intel.com

Globalcode – Open4education
Melhore seus Gráficos
Assim como seu processador, sua unidade gráfica
consome energia
Estratégias para economia:
Simplifique as texturas
Diminua o uso de transparências
Diminua o número de objetos na tela
Diminua o FPS

Globalcode – Open4education
Como priorizar?
Intel Graphics Performance Analyzer
Conjunto de ferramentas para analize e otimização de
aplicações com forte uso de gráficos

Globalcode – Open4education
Conceitos básicos de GPU

Globalcode – Open4education
Vértices

Globalcode – Open4education
Primitivas

Globalcode – Open4education
Fragmentos

Rasterização

Processamento de fragmentos

Globalcode – Open4education
Pixels

Globalcode – Open4education
Demo GPA
Testes “E se …”
Ajudam a identificar gargalos

Globalcode – Open4education
Economizando
Use I/O em batches
Principalmente comunicação em rede

Não use Wakelock
Confie no Android, ele é legal

Use o wakelock mais apropriado
Nunca segure o wakelock sem necessidade

Use broadcaster receivers só quando necessário
Otimize sua aplicação gráfica com GPA
Fundo de tela escuro
Globalcode – Open4education
Android System Services

Globalcode – Open4education
Novidades
Intel System Studio
Beacon Montain
Silvermont
Intel Software Day 22 e 23 Outubro

Emulador
HAXM

http://www.softwareday.com.br

Globalcode – Open4education
Silvermont
Novo processador Atom
Saindo de tecnologia 32nm para 22nm
3x mais desempenho ou;
5x menos consumo de energia

Globalcode – Open4education
Globalcode – Open4education
Referências
http://software.intel.com/articles/wakelocks-for-android
http://developer.android.com/training/monitoring-device-state/index.html
http://software.intel.com/articles/android-power-measurementtechniques
http://developer.android.com/training/monitoring-device-state/index.html
http://software.intel.com/en-us/articles/developing-power-awareapplications-on-android
http://software.intel.com/en-us/articles/intel-hardware-acceleratedexecution-manager/
http://software.intel.com/en-us/articles/installing-the-intel-atom-tmandroid-x86-emulator-image-add-on-from-the-android-sdk-manager/
http://software.intel.com/en-us/vcsource/tools/beaconmountain

Globalcode – Open4education
Contato
George H. Silva
@ghsilva
george.silva@intel.com
http://software.intel.com

Globalcode – Open4education

Mais conteúdo relacionado

Destaque

Design Patterns for mobile apps
Design Patterns for mobile appsDesign Patterns for mobile apps
Design Patterns for mobile appsIvano Malavolta
 
Capítulo 06 - Comunicação entre Activities e Intents Implícitas
Capítulo 06 - Comunicação entre Activities e Intents ImplícitasCapítulo 06 - Comunicação entre Activities e Intents Implícitas
Capítulo 06 - Comunicação entre Activities e Intents ImplícitasMarcio Palheta
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - BásicoHugoDalevedove
 
Desenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaDesenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaNelson Glauber Leal
 
Capítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLiteCapítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLiteMarcio Palheta
 

Destaque (6)

Design Patterns for mobile apps
Design Patterns for mobile appsDesign Patterns for mobile apps
Design Patterns for mobile apps
 
Capítulo 06 - Comunicação entre Activities e Intents Implícitas
Capítulo 06 - Comunicação entre Activities e Intents ImplícitasCapítulo 06 - Comunicação entre Activities e Intents Implícitas
Capítulo 06 - Comunicação entre Activities e Intents Implícitas
 
Programação Android - Básico
Programação Android - BásicoProgramação Android - Básico
Programação Android - Básico
 
Introdução ao Android Studio
Introdução ao Android StudioIntrodução ao Android Studio
Introdução ao Android Studio
 
Desenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certaDesenvolvimento Android: Faça da maneira certa
Desenvolvimento Android: Faça da maneira certa
 
Capítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLiteCapítulo 04 - Persistência de dados com SQLite
Capítulo 04 - Persistência de dados com SQLite
 

Semelhante a Escreva sua App Android sem gastar energia - Intel Sw Day

Treinamento Android Nooclix
Treinamento Android NooclixTreinamento Android Nooclix
Treinamento Android NooclixIury Teixeira
 
Implementando uma Device Farm Android
Implementando uma Device Farm AndroidImplementando uma Device Farm Android
Implementando uma Device Farm AndroidThialison Souza
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldMarcio Palheta
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
Resultados da prova it essentians
Resultados da prova it essentiansResultados da prova it essentians
Resultados da prova it essentiansrntd2
 
Manual lenovo x200
Manual lenovo x200Manual lenovo x200
Manual lenovo x200Ton Tof
 
Manual Placa Mãe Phitronics - P7I45GC-M.pdf
Manual Placa Mãe Phitronics - P7I45GC-M.pdfManual Placa Mãe Phitronics - P7I45GC-M.pdf
Manual Placa Mãe Phitronics - P7I45GC-M.pdfADRIANOLAURENCEDASIL
 
Dojo com Arduino e Program-ME
Dojo com Arduino e Program-MEDojo com Arduino e Program-ME
Dojo com Arduino e Program-MEDr. Spock
 
Aula08 android outros_recursos
Aula08 android outros_recursosAula08 android outros_recursos
Aula08 android outros_recursosRoberson Alves
 
Copbr dvr slc - ldc
Copbr dvr slc - ldcCopbr dvr slc - ldc
Copbr dvr slc - ldcfalames
 
Curso mbed e FRDM KL46Z da NXP
Curso mbed e FRDM KL46Z da NXPCurso mbed e FRDM KL46Z da NXP
Curso mbed e FRDM KL46Z da NXPFabio Souza
 
Curso de Android - aula 2
Curso de Android - aula 2Curso de Android - aula 2
Curso de Android - aula 2Jose Berardo
 
Android: Conheça o Futuro Inevitável
Android: Conheça o Futuro InevitávelAndroid: Conheça o Futuro Inevitável
Android: Conheça o Futuro InevitávelCampus Party Brasil
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaJSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaDr. Spock
 

Semelhante a Escreva sua App Android sem gastar energia - Intel Sw Day (20)

Treinamento Android Nooclix
Treinamento Android NooclixTreinamento Android Nooclix
Treinamento Android Nooclix
 
Implementando uma Device Farm Android
Implementando uma Device Farm AndroidImplementando uma Device Farm Android
Implementando uma Device Farm Android
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
 
Capítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorldCapítulo 01 - Fundamentos de Android e o HelloWorld
Capítulo 01 - Fundamentos de Android e o HelloWorld
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Resultados da prova it essentians
Resultados da prova it essentiansResultados da prova it essentians
Resultados da prova it essentians
 
Manual lenovo x200
Manual lenovo x200Manual lenovo x200
Manual lenovo x200
 
Manual Placa Mãe Phitronics - P7I45GC-M.pdf
Manual Placa Mãe Phitronics - P7I45GC-M.pdfManual Placa Mãe Phitronics - P7I45GC-M.pdf
Manual Placa Mãe Phitronics - P7I45GC-M.pdf
 
Aula 06
Aula 06Aula 06
Aula 06
 
Dojo com Arduino e Program-ME
Dojo com Arduino e Program-MEDojo com Arduino e Program-ME
Dojo com Arduino e Program-ME
 
Aula08 android outros_recursos
Aula08 android outros_recursosAula08 android outros_recursos
Aula08 android outros_recursos
 
Supervisão
SupervisãoSupervisão
Supervisão
 
Copbr dvr slc - ldc
Copbr dvr slc - ldcCopbr dvr slc - ldc
Copbr dvr slc - ldc
 
Curso mbed e FRDM KL46Z da NXP
Curso mbed e FRDM KL46Z da NXPCurso mbed e FRDM KL46Z da NXP
Curso mbed e FRDM KL46Z da NXP
 
Curso de Android - aula 2
Curso de Android - aula 2Curso de Android - aula 2
Curso de Android - aula 2
 
Apresentação android
Apresentação androidApresentação android
Apresentação android
 
Phonegap
PhonegapPhonegap
Phonegap
 
Android: Conheça o Futuro Inevitável
Android: Conheça o Futuro InevitávelAndroid: Conheça o Futuro Inevitável
Android: Conheça o Futuro Inevitável
 
Manual usuario
Manual usuarioManual usuario
Manual usuario
 
JSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com JavaJSF 2.0: Uma Evolução nas Interfaces Web com Java
JSF 2.0: Uma Evolução nas Interfaces Web com Java
 

Mais de Intel Software Brasil

Modernização de código em Xeon® e Xeon Phi™
Modernização de código em Xeon® e Xeon Phi™  Modernização de código em Xeon® e Xeon Phi™
Modernização de código em Xeon® e Xeon Phi™ Intel Software Brasil
 
Escreva sua App sem gastar energia, agora no KitKat
Escreva sua App sem gastar energia, agora no KitKatEscreva sua App sem gastar energia, agora no KitKat
Escreva sua App sem gastar energia, agora no KitKatIntel Software Brasil
 
Desafios do Desenvolvimento Multiplataforma
Desafios do Desenvolvimento MultiplataformaDesafios do Desenvolvimento Multiplataforma
Desafios do Desenvolvimento MultiplataformaIntel Software Brasil
 
Desafios do Desenvolvimento Multi-plataforma
Desafios do Desenvolvimento Multi-plataformaDesafios do Desenvolvimento Multi-plataforma
Desafios do Desenvolvimento Multi-plataformaIntel Software Brasil
 
Getting the maximum performance in distributed clusters Intel Cluster Studio XE
Getting the maximum performance in distributed clusters Intel Cluster Studio XEGetting the maximum performance in distributed clusters Intel Cluster Studio XE
Getting the maximum performance in distributed clusters Intel Cluster Studio XEIntel Software Brasil
 
Methods and practices to analyze the performance of your application with Int...
Methods and practices to analyze the performance of your application with Int...Methods and practices to analyze the performance of your application with Int...
Methods and practices to analyze the performance of your application with Int...Intel Software Brasil
 
Principais conceitos técnicas e modelos de programação paralela
Principais conceitos técnicas e modelos de programação paralelaPrincipais conceitos técnicas e modelos de programação paralela
Principais conceitos técnicas e modelos de programação paralelaIntel Software Brasil
 
Principais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoPrincipais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoIntel Software Brasil
 
Intel Technologies for High Performance Computing
Intel Technologies for High Performance ComputingIntel Technologies for High Performance Computing
Intel Technologies for High Performance ComputingIntel Software Brasil
 
Benchmarking para sistemas de alto desempenho
Benchmarking para sistemas de alto desempenhoBenchmarking para sistemas de alto desempenho
Benchmarking para sistemas de alto desempenhoIntel Software Brasil
 
Yocto no 1 IoT Day da Telefonica/Vivo
Yocto no 1 IoT Day da Telefonica/VivoYocto no 1 IoT Day da Telefonica/Vivo
Yocto no 1 IoT Day da Telefonica/VivoIntel Software Brasil
 
Otávio Salvador - Yocto project reduzindo -time to market- do seu próximo pr...
Otávio Salvador - Yocto project  reduzindo -time to market- do seu próximo pr...Otávio Salvador - Yocto project  reduzindo -time to market- do seu próximo pr...
Otávio Salvador - Yocto project reduzindo -time to market- do seu próximo pr...Intel Software Brasil
 
Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5
Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5
Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5Intel Software Brasil
 

Mais de Intel Software Brasil (20)

Modernização de código em Xeon® e Xeon Phi™
Modernização de código em Xeon® e Xeon Phi™  Modernização de código em Xeon® e Xeon Phi™
Modernização de código em Xeon® e Xeon Phi™
 
Escreva sua App sem gastar energia, agora no KitKat
Escreva sua App sem gastar energia, agora no KitKatEscreva sua App sem gastar energia, agora no KitKat
Escreva sua App sem gastar energia, agora no KitKat
 
Desafios do Desenvolvimento Multiplataforma
Desafios do Desenvolvimento MultiplataformaDesafios do Desenvolvimento Multiplataforma
Desafios do Desenvolvimento Multiplataforma
 
Desafios do Desenvolvimento Multi-plataforma
Desafios do Desenvolvimento Multi-plataformaDesafios do Desenvolvimento Multi-plataforma
Desafios do Desenvolvimento Multi-plataforma
 
Yocto - 7 masters
Yocto - 7 mastersYocto - 7 masters
Yocto - 7 masters
 
Getting the maximum performance in distributed clusters Intel Cluster Studio XE
Getting the maximum performance in distributed clusters Intel Cluster Studio XEGetting the maximum performance in distributed clusters Intel Cluster Studio XE
Getting the maximum performance in distributed clusters Intel Cluster Studio XE
 
Intel tools to optimize HPC systems
Intel tools to optimize HPC systemsIntel tools to optimize HPC systems
Intel tools to optimize HPC systems
 
Methods and practices to analyze the performance of your application with Int...
Methods and practices to analyze the performance of your application with Int...Methods and practices to analyze the performance of your application with Int...
Methods and practices to analyze the performance of your application with Int...
 
Principais conceitos técnicas e modelos de programação paralela
Principais conceitos técnicas e modelos de programação paralelaPrincipais conceitos técnicas e modelos de programação paralela
Principais conceitos técnicas e modelos de programação paralela
 
Principais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoPrincipais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorização
 
Notes on NUMA architecture
Notes on NUMA architectureNotes on NUMA architecture
Notes on NUMA architecture
 
Intel Technologies for High Performance Computing
Intel Technologies for High Performance ComputingIntel Technologies for High Performance Computing
Intel Technologies for High Performance Computing
 
Benchmarking para sistemas de alto desempenho
Benchmarking para sistemas de alto desempenhoBenchmarking para sistemas de alto desempenho
Benchmarking para sistemas de alto desempenho
 
Yocto no 1 IoT Day da Telefonica/Vivo
Yocto no 1 IoT Day da Telefonica/VivoYocto no 1 IoT Day da Telefonica/Vivo
Yocto no 1 IoT Day da Telefonica/Vivo
 
Html5 fisl15
Html5 fisl15Html5 fisl15
Html5 fisl15
 
IoT FISL15
IoT FISL15IoT FISL15
IoT FISL15
 
IoT TDC Floripa 2014
IoT TDC Floripa 2014IoT TDC Floripa 2014
IoT TDC Floripa 2014
 
Otávio Salvador - Yocto project reduzindo -time to market- do seu próximo pr...
Otávio Salvador - Yocto project  reduzindo -time to market- do seu próximo pr...Otávio Salvador - Yocto project  reduzindo -time to market- do seu próximo pr...
Otávio Salvador - Yocto project reduzindo -time to market- do seu próximo pr...
 
Html5 tdc floripa_2014
Html5 tdc floripa_2014Html5 tdc floripa_2014
Html5 tdc floripa_2014
 
Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5
Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5
Desenvolvimento e análise de performance de jogos Android com Coco2d-HTML5
 

Escreva sua App Android sem gastar energia - Intel Sw Day