[Android] Les threads [FRENCH]

Dans cette leçon, vous allez apprendre à lancer des threads.

Pour cela, vous allez utiliser Thread.

Au cours d’un thread, pour s’assurer que l’interface utilisateur ne soit pas figée, vous devez appeler un handler, qui lui pourra accéder à l’interface utilisateur.

final static int HANDLER_RUNNING = 0;
final static int HANDLER_END = 1;
Handler handler;
handler = new Handler(){
  public void handleMessage(Message message) { 
    switch(message.what) {
      case HANDLER_RUNNING: String loop = (String)message.obj; break;
      case HANDLER_END: break;
    }
  }
};

En cours d’exécution du thread, le thread crée un message de handler avec la méthode obtainMessge() puis l’envoie avec la méthode sendMessage.

A la fin du thread, le thread envoie un message sans paramètre avec la méthode sendEmptyMessage().

Thread thread;
thread = new Thread() {
  public void run() {
    try {
      for (int i = 0; i < 10; i++) {
        handler.sendMessage (handler.obtainMessage (HANDLER_RUNNING, "" + i));
        Thread.sleep(1000);
      }              
    } catch (InterruptedException e) {}
    handler.sendEmptyMessage(HANDLER_END);
  };
};
thread.start();

Layout main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
</LinearLayout>

Fichier Main.java

public class Main extends Activity {
    
  Thread thread;
  Handler handler;
  final static int HANDLER_RUNNING = 0;
  final static int HANDLER_END = 1;
  
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    handler = new Handler(){
      public void handleMessage(Message message) { 
        switch(message.what) {
          case HANDLER_RUNNING:
            String loop = (String)message.obj;
            break;
          case HANDLER_END:
            Toast.makeText (Main.this, "Thread terminé", 5000).show();
            break;
        }
      }
    };
    thread = new Thread() {
      public void run() {
        try {
          for (int i = 0; i < 10; i++) {
            handler.sendMessage (handler.obtainMessage (HANDLER_RUNNING, "" + i));
            Thread.sleep(1000);
          }              
        } catch (InterruptedException e){            
        }
        handler.sendEmptyMessage(HANDLER_END);
      };
    };
    thread.start();
  }
}

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×