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?

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top