dimanche 5 février 2012

Tuto - Les Threads sous Android


Après le premier tuto de développement où on a appris a creer une application et des boutons, le second tutoriel de développement sous Android porte sur les Threads simples et leurs interactions avec la fenêtre principale.


I. C'est quoi un thread ?

Un thread est une routine d'execution, une fonction qui est exécutée en arrière plan.
C'est un procédé très utile pour traiter des informations sans bloquer le reste de votre application.

II. Créer un Thread

Créer un Thread est assez simple en fait, il suffit pour cela d'instancier un nouvel objet de type Thread a partir d'un objet dit runnable dans lequel vous aurez défini une fonction Run.


private Thread monThread = new Thread (new Runnable(){
public void run (){
try {
                         //PLACER ICI LE CODE EXECUTABLE DE VOTRE THREAD
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});

Dans cette fonction Run vous placerez le traitement de votre choix.


Par contre, dans un thread, il est interdit d'agir directement avec des objets venant de votre fenêtre principale pour des raisons évidentes de conflit avec l'interface principale [...]


III. Communiquer avec le programme principal 


[...] C'est pour cela qu'il va falloir instancier un objet de la classe Handler pour l'utiliser afin de déclencher un évènement qui appellera la fonction voulue.


 private Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
monTextView.setText("HelloWorld from the thread!!");
}
};


Cette classe Handler sera utilisée par votre thread afin de déclencher l'appel a handleMessage en utilisant handler.sendEmptyMessage(0);







Enfin, vous pouvez créer un thread qui bouclera et le killer quand vous le voudrez a l'aide de la fonction interrupt.

Un exemple ci après d'un thread qui tourne jusqu’à ce qu'on le tue :
La fonction Run :

public void run (){
try {
while(!this.isInterrupted()){
sleep(10);
handler.sendEmptyMessage(0);
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


}


La fonction d'arrêt du Thread :
monThread.interrupt(); // on interrompt le thread
monThread = null; // on tue l'objet(si besoin)




Voilà, j'espère que ce tutoriel aura été assez clair sur la façon d'utiliser des threads sous Android, a vous maintenant d'utiliser des Threads pour créer vos propres applications, au hasard, un chronomètre ou une barre de chargement !

@+ !







4 commentaires:

  1. un peu léger ce tuto camarade ;)

    RépondreSupprimer
    Réponses
    1. Il donne les clefs pour faire a peu près ce qu'on veut avec des thread non joignables.
      Pas de ma faute si c'est aussi simple le dev Android !! Lol

      Supprimer
  2. un bon début mais je suis d'accord avec Jef, on reste sur notre faim. On pourrait aborder les collections synchronisées ou les objets thread safe en complément.

    RépondreSupprimer
  3. Pas faux, je l'aborderai surement dans mon tuto sur la syncronisation.
    Mon but est aussi d'y aller doucement, une idée après l'autre.

    Là on apprends a utiliser un thread simple et a lui permettre de lancer des "tick" sur la fenêtre principale.

    Je n'ai pas eu besoin de plus pour réaliser mon chronomêtre ^^

    RépondreSupprimer