主线程不等待wait(5秒)中的其他线程;

时间:2018-08-31 20:27:41

标签: java android

我正在使用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");
    }

2 个答案:

答案 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一段时间。