我已經降落到需要從兩個不同線程執行相同UI操作(假設顯示Toast
消息)的情況。不同之處在於第一個線程是活動的UI線程,另一個線程是我開始運行一些後臺進程的單獨線程。問題是,確保顯示Toast
消息的代碼始終從UI線程運行的最佳做法是什麼。我在這裏看到兩種可能性。Android:確保UI操作在UI線程上完成的最佳實踐
我們這是爲了顯示像
private void showToast() {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
我們每次調用這個方法時,測試消息,我們確保其有,我們可以使用runOnUiThread()
從UI線程上調用的函數我們叫showToast()
的地方。
另一種選擇是確保顯示Toast
的代碼在方法showToast()
本身內的UI thread
上運行。這樣的東西:
private void showToast() {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
});
}
哪個是首選的做法,爲什麼?
爲什麼不使用第二個選項? –
[Android更新ui線程元素 - 最佳實踐?]的可能重複(http://stackoverflow.com/questions/21635062/android-updating-ui-thread-elements-best-beract-practice) –