首页 > 解决方案 > 主线程在等待(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");
    }

标签: javaandroid

解决方案


我不确定你想在四秒后发生什么,但在 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或其他接口以及在后台线程完成时要执行的方法)。


推荐阅读