IntentService no Android, Entendendo e Utilizando

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes! Você receberá um email de confirmação. Somente depois de confirma-lo é que eu poderei lhe enviar os conteúdos semanais exclusivos. Os artigos em PDF são entregues somente para os inscritos na lista.

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

IntentService no Android, Entendendo e Utilizando

Vinícius Thiengo
(7070) (5)
Go-ahead
"O método consciente de tentativa e erro é mais bem-sucedido que o planejamento de um gênio isolado."
Peter Skillman
Prototipagem Android
Capa do curso Prototipagem Profissional de Aplicativos
TítuloAndroid: Prototipagem Profissional de Aplicativos
CategoriasAndroid, Design, Protótipo
AutorVinícius Thiengo
Vídeo aulas186
Tempo15 horas
ExercíciosSim
CertificadoSim
Acessar Curso
Quer aprender a programar para Android? Acesse abaixo o curso gratuito no Blog.
Lendo
TítuloManual de DevOps: como obter agilidade, confiabilidade e segurança em organizações tecnológicas
CategoriaEngenharia de Software
Autor(es)Gene Kim, Jez Humble, John Willis, Patrick Debois
EditoraAlta Books
Edição1ª
Ano2018
Páginas464
Conteúdo Exclusivo
Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba gratuitamente conteúdos Android sem precedentes!
Email inválido

)

Opa! Blz?

Nesse vídeo mostro como utilizar a classe IntentService ante a classe Service quando queremos trabalhar com Service no Android. Claro que devemos pesar qual é a melhor opção para nossa necessidade, porém já vou adiantando que se você não for trabalhar com multithreads trabalhar com IntentService muito provavelmente será a melhor opção. A classe IntentService já implementa para nós uma thread auxiliar no background com o método onHandleIntent(), para que não seja realizado trabalho pesado (conexão com servidor Web, por exemplo) no processo principal da aplicação, pois conforme dito no primeiro vídeo da série sobre Service no Android o Service executa na mesma Thread principal da aplicação que o contém. A classe IntentService também já chama internamente o método stopSelf(), acho as duas caracteristicas citadas anteriormente uma grande mão na roda, pois só de ter de instanciar uma Thread na mão já é um caminhão de código que pode atrapalhar em interpretação futura por parte de outro desenvolvedor que queira refatorar o código. As desvantagens ficam em não poder trabalhar de Threads concorrentes e também em não dá suporte ao método stopService(), porém essa última desvantagem é facilmente contornada com um pouquinho de lógica (uma solução é apresentada no vídeo). Mas é isso, ressalto que tanto o startService() quanto o bindService() trabalham perfeitamente com a classe IntentService. Note que IntentService é classe filha de Service. Vou evitar mais delongas e deixar você assistir ao vídeo.

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

Página da classe IntentService no site oficial do Android

Segue links dos outros vídeos da série sobre Service apresentada aqui no blog:

Service no Android, Entendendo e Utilizando

Utilizando BindService com Service no Android

Vlw

Investir em Você é Barra de Ouro a R$ 2,00. Cadastre-se e receba grátis conteúdos Android sem precedentes!
Email inválido

Relacionado

Monitorando Bateria de Dispositivo Android Via APIMonitorando Bateria de Dispositivo Android Via APIAndroid
Service no Android, Entendendo e UtilizandoService no Android, Entendendo e UtilizandoAndroid
Utilizando BindService com Service no AndroidUtilizando BindService com Service no AndroidAndroid
Vibrator e HapticFeedback no Android, Entendendo e UtilizandoVibrator e HapticFeedback no Android, Entendendo e UtilizandoAndroid

Compartilhar

Comentários Facebook

Comentários Blog (5)

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...
24/08/2015
Olá, excelente aula, porém no final você até mostra como enviar dados da atividade para o serviço, mas não mostra como receber no serviço estes dados. Tentei fazer da mesma forma de troca de parâmetros entre atividades, porém na service não permite : Intent intent = getIntent();
Existe alguma diferença para enviar parâmetros de uma activity para uma service ?

Obrigado !
Responder
Vinícius Thiengo (1) (0)
25/08/2015
Fala David, blz?
Envie os dados via Bundle:

Bundle bundle = new Bundle();
bundle.putString( "name", "calops" ); // exemplo
Intent it = new Intent(...service...);
it.putExtras( bundle );
startService( it );

E então no IntentService, no método onHandleIntent() seu script acessa:

String name = it.getExtras().getString( "name" );

De qualquer forma, dê uma olhada no EventBus (http://www.thiengo.com.br/eventbus-lib-comunicacao-entre-entidades-android ), com ele esses scripts de comunicação entre entidades da APP ficam bem mais fáceis. Abraço
Responder
25/08/2015
Valeu Vinicius, mas e para uma Service sem ser IntentService, qual a forma de passar parâmetros da Activity para Service ? Pois ela não implementa o método onHandleIntent. Aproveitando, achei show de bola as aulas sobre service, sanou varias dúvidas. Obrigado !
Responder
Vinícius Thiengo (1) (0)
26/08/2015
David, no caso do Service herdando de Service mesmo, vc pode utilizar o onStartCommand() - http://developer.android.com/reference/android/app/Service.html#onStartCommand (android.content.Intent, int, int). No onStartCommand() vc tem a Intent que foi enviada, logo o procedimento de envio é exatamente o mesmo que o realizado na que herdava de IntentService.

E ainda tem a opção de utilizar o EventBus como comentado anteriormente. Abraço
Responder
26/08/2015
Valeu Thiengo, eu estava tentando no onCreate(), por isso não dava certo, funcionou perfeitamente no onStatCommand(), muito obrigado !
Responder