老問題 Android子執行緒中更新UI的3種方法

2021-06-29 05:41:23 字數 844 閱讀 6280

在android專案中經常有碰到這樣的問題,在子執行緒中完成耗時操作之後要更新ui,下面就自己經歷的一些專案總結一下更新的方法:

方法一:用handler

1、主線程中定義handler:

handler mhandler = new handler() 

} };

2、子執行緒發訊息,通知handler完成ui更新:

private void updateweather() 

}).start();

}

方法一的handler物件必須定義在主線程中,如果是多個類直接互相呼叫,就不是很方便,需要傳遞content物件或通過介面呼叫;

方法二:用runonuithread更新

在子執行緒中通過runonuithread()方法更新ui:

new thread() 

});}

}.start();

如果在非上下文類中(activity),可以通過傳遞上下文實現呼叫;

activity activity = (activity) imageview.getcontext();

activity.runonuithread(new runnable()

});

這種方法使用比較靈活,但如果thread定義在其他地方,需要傳遞activity物件;

方法三:view.post(runnable r)

imageview.post(new runnable()

});

這種方法更簡單,但需要傳遞要更新的view過去;

Android 在子執行緒中更新主線程UI

最近發現以前在eclipse中使用的runonuithread在studio中不能使了,所以又找了幾個更新ui的方法 第一種方法 new handler context.getmainlooper post new runnable 第二種方法 如果當前執行緒是ui執行緒,那麼行動是立即執行。如果當...

Android子執行緒中處理吐司的情況

子執行緒中處理一些網路請求或吐司等操作 使用new thread run start 處理單乙個網路請求 可以考慮 非同步任務 asyntask 處理大批量的網路請求 可以考慮 如qq載入小 實時去請求載入資料的時候 可以考慮使用非同步任務 子執行緒中吐司的情況 1 使用looper.prepare...

android 子執行緒更新UI例項

package com.example.test0207 handler import android.os.bundle import android.os.handler import android.os.message import android.view.menu import andr...