Ver mensagens sem resposta | Ver tópicos ativos Hoje é 18 Mai 2013, 06:25



Responder Tópico  [ 3 Mensagens ] 
 [DICA] Não deixe o seu Android dormir em serviço! 
Autor Mensagem
Dalvik Virtual Machine
Dalvik Virtual Machine

Data de registro: 17 Jul 2011, 10:55
Mensagens: 1988
Localização: São Paulo
Mensagem [DICA] Não deixe o seu Android dormir em serviço!
Pessoal, essa vem do meu blog.
Estava dando uma estudada em atividades em background e me deparei com uma nota no Alarm Manager que eu não tinha conhecimento. Fiz uma tradução livre, que cito abaixo:

Citação:
"O Alarm Manager mantém um bloqueio que mantém a CPU funcionando (CPU wake lock) enquanto o método OnReceive do receiver receptor do alarme está sendo executado. Isso garante que o telefone não vai dormir (sleep) até ter terminado de manusear o broadcast. Uma vez que o OnReceive () retorne, o Alarm Manager libera esse bloqueio. Isso significa que o telefone em alguns casos, entra em sleep assim que o seu OnReceive () é concluído. Se o seu Receiver do alarme chama o Context.startService (), é possível que o telefone possa entrar em sleep antes de o serviço solicitado seja iniciado. Para evitar isso, o seu BroadcastReceiver e o Service precisam implementar uma política separada de wake lock para garantir que o telefone continue funcionando até que o serviço esteja disponível."


Então, fui dar uma pesquisada no assunto e encontrei como implementar essa tal de política de wake lock.
Para isso, usamos o serviço do PowerManager. No exemplo mantemos a CPU rodando para executar um serviço. Essa opção é perfeita para o caso devido ao fato de que a CPU ficará rodando mesmo que o usuário aperte a tecla power.


PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock");
wl.acquire();
//
//   coloque aqui o seu código
//
wl.release();
 


Normalmente, colocamos o acquire no onCreate e o release no onDestroy.
Outra coisa, não devemos abusar disso devido ao fato de que isso vai consumir muito mais bateria do que o normal, principalmente nas outras opções que mantém o visor ligado.
Outras opções:



Flag Value.................................... CPU Screen Keyboard
PARTIAL_WAKE_LOCK.................... On Off Off
SCREEN_DIM_WAKE_LOCK............. On Dim Off
SCREEN_BRIGHT_WAKE_LOCK........ On Bright Off
FULL_WAKE_LOCK......................... On Bright Bright

Mais detalhes:
http://developer.android.com/reference/ ... nager.html
http://developer.android.com/reference/ ... nager.html

PS: estava esquecendo, precisa da permissão: android.permission.WAKE_LOCK

Bons códigos!

_________________
Abraços
___________
Novo App: CalcMat - Calculadora de materiais para concreto
Blog: Agorandroid - sobre programação Android
Twitter: @Agorandroid
___________
Campanha: Facilite sua vida e a dos outros usuários
Netiqueta:Procure responder as sugestões. Quando encontrar a solução, coloque [Resolvido] no primeiro post o mais rápido possível. Lembre-se de agradecer às pessoas que ajudaram e poste a solução do problema.


30 Jan 2012, 08:26
Perfil
What is Android?
What is Android?

Data de registro: 26 Jan 2012, 17:55
Mensagens: 2
Mensagem Re: [DICA] Não deixe o seu Android dormir em serviço!
Excelente dica Gusukuma !!!!


30 Jan 2012, 17:54
Perfil
Debugging
Debugging

Data de registro: 23 Out 2010, 15:12
Mensagens: 664
Localização: Caxias do Sul - RS
Mensagem Re: [DICA] Não deixe o seu Android dormir em serviço!
Ótima dica, valeu!

_________________
Samsung Galaxy S II - Oficial 4.1.2 Espanha
Motorola Quench - GingerXT


31 Jan 2012, 00:36
Perfil
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 3 Mensagens ] 

Quem está online

Usuários vendo este fórum: adautox, adelar, ademir.carvalhojr, AdrianoMM, albinoneto, allone, alsimoes, alylson, arilsonm, avsouza, Bass, beeshop, Biggs Darklighter, bocajunior88, BOMBER27, brpiassa, Brunohc, btminzon, cabelo, careisjr, Carla Luz, Carlos Alexandre, cassianotartari, celiapinheiro, Chefe Nass, compto, czambroni, Damiani Oliveira, dariosena, Darth Maul, Darth Vader, David, debal, denisfln, difrene, Douglas Siviotti, dramos, eliasmachado_rj, Erik Patekoski, EvertonLB, Felipe, felipe.cintra, fernando neves, Flavio Alves, flaviohssantos, fraga, freina, gabrielatme, geeks, Gnomo, Gooooogle, Guilherme Cobain, guilhermepilotti, guilhermesmo, hbarroco, helder, humberto, icarodavi, Igor_M, inesfg, JackBlackJack, jhou, jlucasps, jonasminas, João Miguel Aguiar, Juliobcosta, leeeeooooooo, Lord, lucasmadeira, LucasNascimento, lucastgomes, luciocamilo, Lucious, Luna, Machado000, marceloaragao, marcelorferrari, mendes_lu, mikasjau, mravel, msmdark, mtomazzi, mvoto, n3t0, NeruLL, nfaria, nrsf, otium, otpor, paulanegreiros, pchofard, pingumanbr, polonia, poponeis, Princesa Léia Organa, ramonsiebra, rayberg, rbenatti, renanpl, roberto caceres, RodReis, Rodrigo, rubens_olv, sasuke_sarutobi, sergio, sjta, Snappy [Bot], srsilveira, suissa, thosjanas, Vania, vieira, voliverio, Wds, Webnet, XPTO, yeltsinlima e 1 visitante


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:

© 2007 - 2013 Portal Android - Comunidade de Desenvolvedores da Plataforma Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi