我已经降落到需要从两个不同线程执行相同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) –