5 de dezembro de 2013

Services vs IntentServices - Android

A arquitetura Android possui várias "maravilhas" e facilidades que auxiliam os desenvolvedores na hora de criar aplicativos robustos e versáteis. Duas dessas "maravilhas" são as classes Service e IntentService, onde cada uma possui sua particulariedade, vantagens e metodologias de implementação.

Para tanto, é necessário saber quando devemos utilizar uma classe ou outra a fim de não fazer uma escolha errônea, afinal, quanto menos manutenção em nosso código fizermos, MENOS DOR DE CABEÇA! :-)

Para exemplificarmos melhor, trago abaixo uma pequena tabela compartiva para que vocês analisem e escolham qual classe implementar em seu projeto.

Service.class IntentService.class
Quando usar? Tarefas sem conteúdos visuais (UI), mas sem excesso de tempo de execução. Caso for utilizar em longos processos, utilize em conjunto com Threads. Geralmente, efetua longos processos sem comunicação com a UIThread. Caso seja necessário, recomendo utilizar Handlers ou Broadcast Intents.
Como usar? Utilizando a chamada para startService(...), bindService(...) através do método onStartCommand(...). Utilizando Intent apenas.
Executada a partir de qual Thread? Qualquer Thread - com Context. Apenas na UIThread uma vez que Intent's são utilizadas na UIThread, mas geram outras WorkerThreads.
Funciona em qual Thread? UIThread ou Remote (Implementando o AIDL). Em uma WorkerThread separada.
Desvantagens Pode travar a UIThread, se mal implementada. Não executa tarefas paralelas e caso seja necessário rodar múltiplas instâncias do IntentService, será gerado uma Fila - Queue - na mesma WorkerThread.

Service.class

IntentService.class

Activity

Pense direito antes de implementar o tipo de Service que você deseja, ambos possuem suas vantagens e desvantagens!

Espero que ajude, abraço.

Nenhum comentário:

Postar um comentário