Android Exemple de base IntentService


Exemple

La classe abstraite IntentService est une classe de base pour les services, qui s'exécutent en arrière-plan sans aucune interface utilisateur. Par conséquent, pour mettre à jour l'interface utilisateur, nous devons utiliser un récepteur, qui peut être un BroadcastReceiver ou un ResultReceiver :

  • Un BroadcastReceiver doit être utilisé si votre service doit communiquer avec plusieurs composants souhaitant écouter les communications.
  • Un ResultReceiver : doit être utilisé si votre service doit communiquer uniquement avec l'application parente (c'est-à-dire votre application).

Dans IntentService , nous avons une méthode clé, onHandleIntent() , dans laquelle nous allons effectuer toutes les actions, par exemple, préparer des notifications, créer des alarmes, etc.

Si vous souhaitez utiliser votre propre IntentService , vous devez l'étendre comme suit:

public class YourIntentService extends IntentService {
    public YourIntentService () {
        super("YourIntentService ");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        // TODO: Write your own code here.
    }
}    

L'appel / démarrage de l'activité peut se faire comme suit:

Intent i = new Intent(this, YourIntentService.class);
startService(i);  // For the service.
startActivity(i); // For the activity; ignore this for now.

Semblable à toute activité, vous pouvez lui transmettre des informations supplémentaires, telles que des données de regroupement, comme suit:

Intent passDataIntent = new Intent(this, YourIntentService.class);
msgIntent.putExtra("foo","bar");
startService(passDataIntent);

Supposons maintenant que nous avons transmis des données à la classe YourIntentService . Sur la base de ces données, une action peut être effectuée comme suit:

public class YourIntentService extends IntentService {
    private String actvityValue="bar";
    String retrivedValue=intent.getStringExtra("foo");

    public YourIntentService () {
        super("YourIntentService ");
    }

    @Override
    protected void onHandleIntent(Intent intent) {
        if(retrivedValue.equals(actvityValue)){
            // Send the notification to foo.
        } else {
            // Retrieving data failed.
        }    
    }
}

Le code ci-dessus montre également comment gérer les contraintes dans la méthode OnHandleIntent() .