java - Java Android 传递函数作为 runOnUiThread 的参数
问题描述
我不是 Java 专家,我想了解如何传递必须使用 runOnUiThread 执行的函数
类似的东西
public void runOnActivity(FUNCTION) {
mActivity.runOnUiThread(
new Runnable() {
@Override
public void run() {
FUNCTION();
}
}
);
}
接着
public void reload(){
runOnActivity(mContext.reload);
}
甚至更好,因为它们应该始终被称为 mContext 方法:
public void runOnActivity(METHOD_NAME) {
mActivity.runOnUiThread(
new Runnable() {
@Override
public void run() {
mContext.METHOD_NAME();
}
}
);
}
接着
public void reload(){
runOnActivity("reload");
}
所有函数总是返回 VOID 我希望我自己解释一下。
谢谢
解决方案
您可以Runnable
像这样将您的功能包含在块中
Runnable myFunction = () -> System.out.println("some function");
void runOnMain(Runnable runnable) {
mActivity. runOnUiThread {
runnable.run();
}
}
最后,调用你的方法:
runOnMain(myFunction);
我希望,您很快就会切换到 Kotlin 并更轻松地执行此类操作 :)
推荐阅读
- c - #include 检测到错误。请更新您的 includePath。尝试使用 C 编码时,vscode 中此翻译单元的曲线被禁用
- python - YT_DL 使用 ytsearch:{url} 下载了错误的视频
- nosql - 表中的主键应该是用户定义的字符串还是 UUID?
- azure-storage - Azure 存储资源管理器(在浏览器中)在瑞典数据中心失败
- apache-spark - 相似数据集上的联合操作
- django-rest-framework - 使用 Django rest 框架在部署服务器上的 docx 中未写入动态内容。在本地机器上工作正常
- google-cloud-platform - 虚拟机实例和免费谷歌帐户中的所有其他设置都被清除了
- go - 如何在golang中使用stretchr/testify通过表测试运行testify setup/teardown?
- simulation - 托盘应该在货架上等待被另一辆特工卡车捡起,而不是被水槽块摧毁
- nginx - 如何在子域上部署 API?