2016-09-21 44 views
0

我已經降落到需要從兩個不同線程執行相同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(); 
      } 
     }); 
    } 

哪個是首選的做法,爲什麼?

+0

爲什麼不使用第二個選項? –

+0

[Android更新ui線程元素 - 最佳實踐?]的可能重複(http://stackoverflow.com/questions/21635062/android-updating-ui-thread-elements-best-beract-practice) –

回答

1

使用第二個選項。如果您已經在UI-Thread上,則只需在相同的上下文中執行該操作。 Reference