我正在使用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)
{
}
这是callThreadFunction:
Thread t1 = new Thread(runnable);
t1.start();
try {
t1.join();
}
catch (Exception e)
{
System.out.println("Error caught");
}
答案 0 :(得分:4)
我不确定四秒钟后您想要做什么,但是在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
或其他接口)。 / p>
答案 1 :(得分:-1)
如果由于UI行为不想使用sleep()
,请尝试使用Handler
:
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
//Write your code here
}
}, 4000); //Timer is in ms here.
您在中间写的任何内容都会等待4秒钟或4000ms。无论如何,不建议等待当前的Thread
一段时间。