Capturando IntentService Intents antes de onHandleIntent
-
29-10-2019 - |
Pergunta
Tenho um IntentService que enfileira as chamadas de serviço da web a serem feitas.Eu passo um inteiro como um Extra com cada Intent, que define o tipo de chamada de serviço da web a ser feita.
Eu gostaria de criar uma situação em que, se um Intent para realizar um determinado serviço da web for passado para o IntentService e um Intent para esse mesmo serviço da web já existir na fila IntentService, o Intent não será processado.O ideal é que eu jogue fora o Intent, mas também poderia adicionar um Extra a ele que permite que o código ignore o Intent assim que for tratado.Conforme os Intents chegam, posso rastrear quais estão na fila em algum objeto que adicionei ao IntentService.
No entanto, não vejo um lugar para interceptar o Intent logo que ele é passado para o IntentService.Pelo que eu posso dizer, só posso tocá-lo quando onHandleIntent é chamado e isso seria tarde demais.
Alguma ideia?
Solução
Não é estritamente aconselhável, mas sugiro algo assim:
public int onStartCommand (Intent intent, int flags, int startId)
{
// do your intent modification here
//if(intentIsDuplicate(intent))
// make sure you call the super class to ensure everything performs as expected
return super.onStartCommand(intent, flags, startId);
}
Me avise se funcionar.