Givemepass's Android 惡補筆記

如何使用Thread和Handler

| Comments

在如何使用Thread和Handler這篇文章中, 介紹Handler跟Thread的關係,
但是其實這樣做並不是很好, 如果只是為了更新一個簡單的UI,
其實可以用Main Thread來做就好。

怎麼做呢? 很簡單這個範例提供兩個方法:

  1. runOnUiThread
  2. Handler

這兩個都會跑在MainThread上面。

    runOnUiThread(new Runnable(){
        @Override
        public void run() {
            //UI更新

        }
    });
    new Handler(getMainLooper()).post(new Runnable(){

        @Override
        public void run() {
            //UI更新

        }
        
    }); 

方法如上 其實非常簡單 所以也不需要範例程式

這兩個差別在哪裡?

Handler

 Runnable task = getTask();
 new Handler(Looper.getMainLooper()).post(task);

runOnUiThread

public final void runOnUiThread(Runnable action) {
    if (Thread.currentThread() != mUiThread) {
        mHandler.post(action);
    } else {
        action.run();
    }
}

runUiOnThread會去檢查是否在MainThread, 如果是就直接post, 否則則會透過Handler去傳送message。

Comments

comments powered by Disqus