Upload
bruno-delb
View
100
Download
0
Embed Size (px)
Citation preview
Développer sur AndroidAndroid Lab Test
www.AndroidLabTest.com
Face
bo
ok
Par Bruno Delb
www.youtube.com/androidlabtest
www.twitter.com/brunodelb | www.facebook.com/brunodelb | blog.brunodelb.com
www.facebook.com/Androidlabtest
You
tub
e
Site
off
icie
l
Leçon : Les threads
Les threads
• Dans cette leçon, vous allez apprendre à lancer des
threads.
• Pour cela, vous allez utiliser Thread.
Les threads
• 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;
}}
};
Les threads• 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.javapublic 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;
}
}
};
Fichier Main.java
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();
}
}
Testez sur votre mobile
System_Thread
Retrouvez-moi sur ma chaîne AndroidLabTest …
Sur ma chaîne Youtubehttps://www.youtube.com/user/mobiledevlabtest
Qui suis-je ?
Bruno Delb,
auteur du 1er livre francophone de développement d’application Java sur mobile (2002),
développeur d’applications mobiles & sociales,
parlez-moi de vos projets.
Et bien sûr sur mon site Web :http://blog.brunodelb.com