IntentService 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 /IntentService no Android, Entendendo e Utilizando

IntentService no Android, Entendendo e Utilizando

Vinícius Thiengo13/03/2014
(2724) (6) (23) (1)
Go-ahead
"Não compare você mesmo com outros, pois é ai que começa a perder confiança em si próprio."
Will Smith
Código limpo
Capa do livro Refatorando Para Programas Limpos
TítuloRefatorando Para Programas Limpos
CategoriaEngenharia de Software
AutorVinícius Thiengo
Edição
Ano2017
Capítulos46
Páginas598
Comprar Livro
Conteúdo Exclusivo
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

)

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

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

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 (1)

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