2010-12-05 26 views
6

Je crée ma première application Android et je dois utiliser un service. L'interface utilisateur aura une case à cocher (CheckBoxPreference) qui sera utilisée pour activer/désactiver le service et le service ne sera accessible par mon application (il n'est pas nécessaire de le partager). Jusqu'à présent, l'interface utilisateur pour cette fonctionnalité est prête et je sais comment répondre à l'événement, ce que je ne sais pas comment créer un service, ni comment s'y connecter que ce soit. L'idée est que le service continue à écouter les événements et à y répondre en arrière-plan et que l'application est uniquement utilisée pour l'activer/désactiver ou pour modifier certains paramètres.Création d'un service sous Android

J'ai cherché des tutoriels sur le Web, mais je ne semble pas obtenir le processus.

Répondre

10
CheckBox checkBox = 
    (CheckBox) findViewById(R.id.check_box); 
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     if (isChecked) { 
      startService(new Intent(this, TheService.class)); 
     } 
    } 
}); 

Et le service:

public class TheService extends Service { 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     Toast.makeText(this, "Service created!", Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public void onDestroy() { 
     Toast.makeText(this, "Service stopped", Toast.LENGTH_LONG).show(); 
    } 

    @Override 
    public void onStart(Intent intent, int startid) { 
     Toast.makeText(this, "Service started by user.", Toast.LENGTH_LONG).show(); 
    } 
} 
+3

La ligne startService (nouvelle intention (ce, TheClass.class)); devrait lire: startService (new Intent (this, TheService.class)). Et n'oubliez pas d'ajouter le service au AndroidManifest.xml – PedroC88

+0

Merci pour les heads up! Fixé. – whirlwin

+0

Mon commentaire était pour ceux qui sont venus après pour qu'ils ne soient pas perdus, mais c'est mieux :) Merci. – PedroC88

1

Dans Android Studio package clic droit, puis choisissez Nouveau | Service | Un service. Maintenant, ajoutez cette méthode:

@Override 
int onStartCommand(Intent intent, int flags, int startId) { 
    // Your code here... 
} 

Remarque: onStart est dépréciée.

Pour démarrer le service: A partir d'une méthode d'activité onCreate (ou méthode OnReceive d'un récepteur de radiodiffusion):

Intent i = new Intent(context, MyService.class); 
context.startService(i);