標籤:
原文地址:http://blog.csdn.net/boyupeng/article/details/6208072
這篇文章中有三點需要提前說明一下,
一:
在android中有兩種實現線程thread的方法:
一種是,擴充java.lang.Thread類
另一種是,實現Runnable介面
二:
Thread類代表線程類,它的兩個最主要的方法是:
run()——包含線程運行時所執行的代碼
Start()——用於啟動線程
三:
Handler 機制,它是Runnable和Activity互動的橋樑,在run方法中發送Message,在Handler裡,通過不同的Message執行不同的任務。
(Handler的設計實際上是為了應用程式內其他線程和主線程進行通訊,因為只有主線程才能更新UI,其他線程不行)
下面分別給出兩種線程的實現方法,其一,擴充java.lang.Thread類,也就是把run()方法寫到線程裡面:
1 package com.my; 2 import android.app.Activity; 3 import android.os.Bundle; 4 import android.os.Handler; 5 import android.os.Message; 6 import android.util.Log; 7 import android.view.View; 8 import android.view.View.OnClickListener; 9 import android.widget.Button; 10 public class Demo_For_Copy extends Activity 11 { 12 public Button button; 13 14 public Handler mHandler=new Handler() 15 { 16 public void handleMessage(Message msg) 17 { 18 switch(msg.what) 19 { 20 case 1: 21 button.setText(R.string.text2); 22 break; 23 default: 24 break; 25 } 26 super.handleMessage(msg); 27 } 28 }; 29 30 /** Called when the activity is first created. */ 31 @Override 32 public void onCreate(Bundle savedInstanceState) 33 { 34 super.onCreate(savedInstanceState); 35 setContentView(R.layout.main); 36 button=(Button)findViewById(R.id.button); 37 38 Thread thread=new Thread(new Runnable() 39 { 40 @Override 41 public void run() 42 { 43 Log.e("1111", "111111111"); 44 // TODO Auto-generated method stub 45 Message message=new Message(); 46 message.what=1; 47 mHandler.sendMessage(message); 48 } 49 }); 50 thread.start(); 51 } 52 }
其二,實現Runnable介面,讓類實現Runnable介面,然後把run方法單獨提出來:
1 package com.my; 2 import android.app.Activity; 3 import android.os.Bundle; 4 import android.os.Handler; 5 import android.os.Message; 6 import android.util.Log; 7 import android.view.View; 8 import android.view.View.OnClickListener; 9 import android.widget.Button; 10 import android.widget.LinearLayout; 11 public class Title_Change_Demo extends Activity implements Runnable 12 { 13 public Button button; 14 public LinearLayout my_layout; 15 16 public Handler mHandler=new Handler() 17 { 18 public void handleMessage(Message msg) 19 { 20 switch(msg.what) 21 { 22 case 1: 23 button.setText(R.string.text2); 24 break; 25 default: 26 break; 27 } 28 my_layout.invalidate(); 29 super.handleMessage(msg); 30 } 31 }; 32 33 /** Called when the activity is first created. */ 34 @Override 35 public void onCreate(Bundle savedInstanceState) 36 { 37 super.onCreate(savedInstanceState); 38 setContentView(R.layout.main); 39 40 button=(Button)findViewById(R.id.button); 41 my_layout=(LinearLayout)findViewById(R.id.my_layout); 42 43 Thread thread=new Thread(this); 44 thread.start(); 45 } 46 47 @Override 48 public void run() 49 { 50 Log.e("ok", "111111111"); 51 // TODO Auto-generated method stub 52 Message message=new Message(); 53 message.what=1; 54 mHandler.sendMessage(message); 55 } 56 } 57
Android—— 線程 thread 兩種實現方法!(轉)