如何检查安卓线程是否正在运行

2022-09-04 01:13:46

有没有办法检查 Thread 对象是否已经启动了调用?

我正在尝试这样的事情:

if(rt.isAlive() == true)
{
    Log.v(TAG, "START RECORD");
    rt.recording = true;
}
else
{
    Log.v(TAG, "START THREAD/RECORD");

    rt.start();
}

如果线程尚未运行,它将启动线程。


答案 1

假设这是一个,只需检查。rtThreadrt.isAlive()

或者,只需使用布尔标志,并在启动线程之前将其设置为 true。

我实际上更喜欢布尔方法,因此主线程无法启动另一个线程两次 - 在您的线程启动并运行之前可能会有短暂的延迟,并且如果您的主线程尝试快速连续启动线程两次,它可能会得到“假”负。rt.isAlive()


答案 2

我成功地使用了这种方法:

if ( mythread.getState() == Thead.State.NEW )
    //then we have a brand new thread not started yet, lets start it
    mythread.start();
else
    //it is running already compensate

推荐