2016-09-21 68 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