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

waj*_*jiw 13 java multithreading android

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

我正试图这样:

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

    rt.start();
}
Run Code Online (Sandbox Code Playgroud)

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

Ebo*_*ike 15

假设这rt是一个Thread,只需检查rt.isAlive().

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

我实际上更喜欢布尔方法,所以主线程无法启动另一个线程两次 - 可能会有一个短暂的延迟,直到你的线程启动并运行,如果你的主线程尝试快速启动线程两次继承,它可能会得到"假"否定rt.isAlive().


j2e*_*nue 7

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

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
Run Code Online (Sandbox Code Playgroud)