作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我实际上正在尝试在 Android 上开发一个函数来计算一些东西,但是,这个方法可以(或不!)从任务调用。这个方法必须在完成的每一步中进行Toast,我找到了方法.runOnUiThread(Runnable ...)
。直接写在我的函数中。
这是可行的,但是如果将来有人不想要 Toasts 并且更喜欢更新加载栏怎么办?这就是为什么我想知道是否可以向我的函数传递一个可以在 UI 线程上运行的方法,以及对于我的函数的用户来说尽可能简单的方法?也许有一种有效的 lambda 表达式语法?
提前致谢。
最佳答案
有一些方法:
您已经提到了第一种方式:
activity.runOnUniThread(Runnable runnable);
您也可以使用以下方法:
view.post(Runnable runnable);
或者:
view.postDelayed(Runnable runnable, int delay);
示例:
textView.post(r -> {
Log.e("Activity" ,"Text");
});
只需将代码写入可运行的文件中即可。您甚至可以预定义它:
Runnable r = new Runnable(r -> {
// make your stuff
});
// ...
button.post(r);
最后一个选项:处理程序
Handler handler = new Handler();
// You know the scheme :
handler.post(r);
// or
handler.postDelayed(r, 1000);
关于java - 将函数作为参数传递以在 UI 线程上启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60995375/
我是一名优秀的程序员,十分优秀!