[Android] Thread (2)

摘要:[Android] Thread (1)

在 Android 子執行緒要進入UI Thread 變更UI內容,有以下四種方法:

  1. 透過Activity.runOnUIThread() 進入 UI Thread 內處理。
  2. 透過Handler Push Message/Runnable 於 UI Thread 處理 UI 內容。
  3. 透過View.Post(Runnable)處理。
  4. 透過AsyncTask 類別處理。

1.透過Activity.runOnUIThread() 進入 UI Thread 內處理。

new Thread(new Runnable(){
	 public void run(){
		 final Bitmap img = loadImageFromNetwork("http://upload.wikimedia.org/wikipedia/commons/7/7a/Basketball.png");	 
		 
		 runOnUiThread(new Runnable() {     
	         public void run()     
	         {     
	        	 mImageViewPic.setImageBitmap(img);
	         }     
		 });     
	 }
 }).start();

2.透過Handler Push Message/Runnable 於 UI Thread 處理 UI 內容。

   子執行緒可以透過 sendMessage 將 Message Push 到 Main Thread 的 MQ中,通知主執行緒更新UI內容。

new Thread(new Runnable(){

	 public void run(){
		 Bitmap img = loadImageFromNetwork("http://upload.wikimedia.org/wikipedia/commons/7/7a/Basketball.png");	 
		 
		 Message msg = Message.obtain();
		 msg.obj = img;
		 mHandler.sendMessage(msg);
		 
	 }
}).start();

Handler

private Handler mHandler = new Handler() {
	public void handleMessage(Message msg) {
	    super.handleMessage(msg);
	    mImageViewPic.setImageBitmap((Bitmap)msg.obj);
	}
};