Domanda

Ho un IntentService che mette in coda le chiamate al servizio web da effettuare.Passo un intero come Extra con ogni Intent che definisce il tipo di chiamata al servizio web da effettuare.

Vorrei creare una situazione in cui, se un Intent per eseguire un particolare servizio Web viene passato a IntentService e un Intent per lo stesso servizio Web esiste già nella coda IntentService, l'Intent non viene elaborato.Idealmente, butterei via l'Intent, ma potrei anche aggiungere un Extra ad esso che fa sapere al codice di saltare l'Intent una volta che è stato gestito.Man mano che arrivano gli Intent, posso tenere traccia di quali sono in coda in alcuni oggetti che aggiungo a IntentService.

Tuttavia, non vedo un punto in cui intercettare il diritto Intent quando viene passato a IntentService.Per quanto ne so, posso toccarlo solo quando viene chiamato onHandleIntent e sarebbe troppo tardi.

Qualche idea?

È stato utile?

Soluzione

Non è consigliabile in senso stretto, ma suggerirei qualcosa del genere:

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);
}

Fammi sapere se funziona.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top