摘要:[Android] Thread (1)
在 Android 子執行緒要進入UI Thread 變更UI內容,有以下四種方法:
- 透過Activity.runOnUIThread() 進入 UI Thread 內處理。
- 透過Handler Push Message/Runnable 於 UI Thread 處理 UI 內容。
- 透過View.Post(Runnable)處理。
- 透過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);
}
};