Service no Android, Entendendo e Utilizando

Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação. Você receberá um email de confirmação. Somente depois de confirmar é que poderei lhe enviar o conteúdo exclusivo por email.

Email inválido.
Blog /Android /Service no Android, Entendendo e Utilizando

Service no Android, Entendendo e Utilizando

Vinícius Thiengo02/03/2014, Domingo, às 02h
(4389) (25) (25) (2)

Opa! Blz?

Nesse vídeo mostro como utilizar a classe Service do Android para trabalhar processamentos no background e por tempo indeterminado. Note que nesse primeiro vídeo sobre Service utilizo o método startService() que é comum para aplicações que necessitam de ficar também em processamento no background por tempo indeterminado. O método que pretendo comentar no próximo vídeo é o bindService(). Note que o Service executa não somente no background, na verdade ele executa sem ao menos o usuário ter aberto a aplicação, mostro no vídeo como fazer essa jogada utilizando a classe BroadcastReceiver juntamente com as permissões de BOOT_COMPLETED do Android.

Considero a classe Service uma daquelas que ampliam nosso horizonte na programação, muito importante seu entendimento, pois muito provavelmente se você é ou está se tornando desenvolvedor Android, uma hora terá de utilizá-la, isso se não já a utilizou. Fique atento quanto ao ciclo de vida do Service, pois como ressalto no vídeo, mesmo fazendo várias chamadas ao Service, esse será instanciado apenas uma vez, porém p método do ciclo de vida onStartCommand() será chamado a cada nova chamada dando inicio a um novo processo dentro do service já em execução... mas enfim, esse texto é longo e o vídeo está melhor explicado.

Note que no vídeo falo sobre BroadcastReceiver e Intent, se vc não conhece essas entidades, segue vídeos em que falo sobre elas:

BroadcastReceiver no Android, Executando Tarefas no Background

Classe Intent e o Conceito de Pilha em Android

O link para download do projeto se encontra logo abaixo no post.

Página da classe Service no site oficial do Android

Vlw.

Receba em primeira mão o conteúdo exclusivo do Blog, além de promoções de livros e cursos de programação.
Email inválido

Relacionado

VideoView Com Vídeo Interno a APP AndroidVideoView Com Vídeo Interno a APP AndroidAndroid
Chronometer no Android, Entendendo e UtilizandoChronometer no Android, Entendendo e UtilizandoAndroid
Fonts Personalizadas no Android Com a Classe TypefaceFonts Personalizadas no Android Com a Classe TypefaceAndroid
Monitorando Bateria de Dispositivo Android Via APIMonitorando Bateria de Dispositivo Android Via APIAndroid

Compartilhar

Comentários Facebook (13)

Comentários Blog (12)

Para código / script, coloque entre [code] e [/code] para receber marcação especifica.
Forneça seu nome válido.
Forneça seu email válido.
Forneça o comentário.
Enviando, aguarde...
Rafael Fraga (1) (0)
13/12/2016, Terça-feira, às 15h
Muito legal seu post! Me tire uma dúvida, e se meu App tivesse mais de uma activity, sendo que a main seria um menu. No momento em que eu chamasse o service no create da activity o service rodaria direto, independente abrir e fechar as telas que estaria navegando pelo App? Ou seja, o service rodaria no App inteiro?
Responder
Vinícius Thiengo (0) (0)
13/12/2016, Terça-feira, às 18h
Rafael, tudo bem?

É isso mesmo, o Service continua funcionando independente das activities de sua App que estão sendo navegadas. Ele é um componente independente de outros.

Porém você não consegue ter mais de uma instancia do mesmo Service. Coloquei isso aqui, pois não lembro de ter falado sobre em algum dos artigos sobre Service aqui no Blog. Abraço.
Responder
Vinicius (1) (0)
12/11/2016, Sábado, às 20h
Thiengo, tudo certo?

Como faço para enviar dados (obtidos através do EditText) de uma activity para um service?
Responder
Vinícius Thiengo (2) (0)
15/11/2016, Terça-feira, às 18h
Vinicius, tudo bem?

Tem mais de uma forma de conseguir isso. As mais simples são: utilizando o bindService e utilizando o EventBus.

Abaixo deixo dois links dos artigos / vídeos que tenho aqui no Blog sobre essas opções:

bindService: http://www.thiengo.com.br/utilizando-bind-service-com-service-no-android
EventBus: http://www.thiengo.com.br/eventbus-lib-comunicacao-entre-entidades-android

Na opção com o EventBus, não deixe de acessar a página dele no GitHub, pois já há uma versão nova da library. De qualquer forma o vídeo dele vai lhe ajudar utiliza-lo.

Em ambos os artigos, não deixe de ler os comentários, pois algumas vezes as suas dúvidas já estão respondidas neles. Abraço.
Responder
Vinicius (1) (0)
29/11/2016, Terça-feira, às 22h
E aê Thiengo tudo certo?

Funcionou bem aqui, valeu pela ajuda.
Responder
05/03/2015, Quinta-feira, às 12h
Thiengo, eu preciso criar um broadcast pra ficar na escuta e capturar as info das mensagens recebidas, ae vi nos seus vídeos que preciso de um service pois o broadcast só dura 10s,  no caso como funcionaria essa interação do broadcast e o service? O service chama o broadcast ou o broadcast chama o service? Queria ter uma noção mais ou menos como seria...
Responder
Vinícius Thiengo (1) (0)
06/03/2015, Sexta-feira, às 10h
Fala Adam, blz?
Quando a mensagem de texto chega no device um Intent é disparado com uma determinada diretiva (no caso a diretiva informando a todos os Broadcasts que uma nova mensagem chegou), assim os Broadcasts que respondem a essa diretiva (com o IntentFIlter adequado) vão ter o método onReceive() disparado para então com os dados da mensagem realizar algum procedimento, porém pelo ciclo de vida do BroadcastReceiver ser curto é recomendo que chame um Service se houver algum trabalho pesado no background (network, por exemplo), assim o tempo pode ser indeterminado, pois o Service suporta essa caracteristica. Dê uma olhada nesse link (https://android-arsenal.com/search?q=sms) e vê se algum dos links dentro dele lhe ajudam a fazer isso mais rapidamente. Abraço
Responder
João Arthur (1) (0)
02/03/2015, Segunda-feira, às 23h
Thiengo, como faço para monitorar o dispositivo via service ? preciso saber se o dispositivo está bloqueado ou não, e dai contabilizar quanto tempo o dispositivo ficou bloqueado e quanto tempo ficou sendo utilizado
Responder
Vinícius Thiengo (0) (0)
03/03/2015, Terça-feira, às 10h
Fala João Arthur, blz?
Vc pode utilizar um AlarmManager para disparar de tempos em tempos um Service que trabalhará com um SQLite para ir salvando os tempos de device bloqueado e device em uso. Porém fique atento para utilizar em conjunto um BroadcastReceiver (BOOT_COMPLETED), pois quando o device é reiniciado os AlarmManagers configurados são perdidos, logo com o BroadcastReceiver trabalhando com a chamada BOOT_COMPLETED vc consegue reiniciar o AlarmManager.

Outra opção é deixar o Service rodando no background, assim vc teria um precisão maior do tempo em que o aparelho ficou bloqueado ou não, porém sua APP tende a acabar com a bateria do usuário rapidamente nesse modo.

E a ultima opção que vejo é utilizando um JobScheduler ou um SyncAdapter, o JobScheduler é mais atual e bem mais tranquilo de se trabalhar, porém para utilizar em versões anteriores ao Android 5 vc terá de utilizar uma lib para isso, veja esse vídeo para entender melhor sobre o JobScheduler (https://www.youtube.com/watch?v=ksjEVMFRLSk&list=PLonJJ3BVjZW6CtAMbJz1XD8ELUs1KXaTD&index=44). Abraço
Responder
João Arthur (1) (0)
03/03/2015, Terça-feira, às 12h
Obrigado Thiengo! cara só mais uma questão, existe algum retorno/função no android que me diga se o celular está bloqueado ou em uso ?
Responder
Vinícius Thiengo (0) (0)
04/03/2015, Quarta-feira, às 09h
João Arthur, dê uma olhada nesse link do stackoverflow (http://stackoverflow.com/questions/9002032/how-to-find-the-screen-is-locked-in-android), mais precisamente no primeiro comentário da pergunta do link, aparentemente vai ser util. Abraço
Responder
João Arthur (1) (0)
04/03/2015, Quarta-feira, às 09h
Obrigado Thiengo, me ajudou muito! queria parabenizar pelo excelente blog e pelo conteúdo então muito bom, abraço.
Responder