作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了需要从两个不同线程执行一些相同 UI 操作(比方说显示 Toast
消息)的情况。不同之处在于,第一个线程是 Activity 的 UI 线程,另一个线程是我开始运行一些后台进程的单独线程。问题是,确保显示 Toast
消息的代码始终从 UI 线程运行的最佳实践是什么。我在这里看到两种可能性。
我们有一个函数应该显示测试消息,例如
private void showToast() {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
每次我们调用此方法时,我们都会确保必须在 UI 线程上调用它,我们可以在调用 showToast()< 的地方使用
.runOnUiThread()
/
另一个选项是确保显示 Toast
的代码在方法 showToast()
本身内的 UI 线程
上运行。像这样的事情:
private void showToast() {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
});
}
哪种是首选做法?为什么?
最佳答案
使用第二个选项。如果您已经在 UI 线程上,则该操作将在相同的上下文中执行。 Reference
关于java - Android:确保 UI 操作在 UI 线程上完成的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39615025/
我是一名优秀的程序员,十分优秀!