java - 主线程在等待(5 秒)中不等待其他线程;
问题描述
我正在使用 java 的 android studio 中的 android 应用程序中工作。
我正在创建一个带有一些参数的可运行文件。调用线程函数正在创建一个新线程,在创建这个新线程后,我希望主线程等待 4 秒(不会导致 UI 崩溃)。它到处找,我似乎无法得到这个问题的答案
Runnable runnable;
runnable = new timedVisibility(calibratePointList,0,1,ok);
callThreadFunction(runnable);
try {
Thread.currentThread().wait(4000);
}
catch (Exception e)
{
}
这是调用线程函数:
Thread t1 = new Thread(runnable);
t1.start();
try {
t1.join();
}
catch (Exception e)
{
System.out.println("Error caught");
}
解决方案
我不确定你想在四秒后发生什么,但在 Android 中你可以使用Handler
:
Handler handler = new Handler();
Runnable followUpAction = new Runnable() {
@Override public void run() { /* something to do after 4 seconds */ }
};
handler.postDelayed(runnable, 4000);
您不希望您的 UI 线程等待后台线程完成。如果您想在后台线程完成后立即采取一些行动,您应该使用回调方案(传递一个Runnable
或其他接口以及在后台线程完成时要执行的方法)。
推荐阅读
- python-3.x - Python异步队列没有完成
- javascript - 按键过滤地图
- angularjs - Angular 混合错误:试图在设置之前获取 AngularJS 注入器
- css - 为什么动画 div 向上移动,然后以跳跃结束?
- xml - Angular 5 http服务响应错误
- lucene.net - 如何在自定义智能搜索 Web 部件中允许前导通配符 (Kentico 10)
- javascript - Vue CLI 3:热重载需要很长时间才能重建
- ibm-cloud-infrastructure - 如何通过 SL API 订购没有公共 NIC 的裸机
- javascript - JavaScript 数组失去作用域并且没有传递到我的函数中
- java - Groovy 匹配以正则表达式结尾