java - 将函数作为参数传递以在 UI 线程上启动

标签 java android multithreading handler

我实际上正在尝试在 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/

相关文章:

android - Android 阿拉伯字母的 keyCodes

java - Android .java 文件正在获取的完整格式链列表是什么?

iphone - 如何让一段代码在单独的线程中运行?

java - 为什么我的 Java 扫描仪不接受输入?

java - 类路径顺序因 JUnit 运行程序而异

Java Map Value Comparator,边插入边排序

android - AS3 : Drawing Lines With Touch Screens

Java 线程和同步块(synchronized block)

java - ThreadInfo 类提供的信息是否比 JVMTI 提供的信息更多?

java - 无法使用 spring 和 hibernate 5.0 执行空间查询