Java Android-检查Runnable是否正在运行

Java Android-检查Runnable是否正在运行,java,android,eclipse,multithreading,service,Java,Android,Eclipse,Multithreading,Service,我想检查Runnable是否在我的服务中处于活动状态。我有办法做到这一点吗 private Runnable sendData = new Runnable() { public void run() { try { superToast.show(); screenOn(); vibrate(); mHandler.postDelayed(sendData, time);

我想检查Runnable是否在我的服务中处于活动状态。我有办法做到这一点吗

private Runnable sendData = new Runnable() {
    public void run() {
        try {
            superToast.show();
            screenOn();
            vibrate();
            mHandler.postDelayed(sendData, time);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
};

您可以创建布尔变量并检查其值是否正在运行

boolean isRunning = false;

private Runnable sendData = new Runnable() {
    public void run() {
        try {
            isRunning = true;
            superToast.show();
            screenOn();
            vibrate();
            mHandler.postDelayed(sendData, time);
        } catch (Exception e) {
            e.printStackTrace();
            isRunning = false;
        }
    }
};

现在检查isRunning,如果它是真的,那么它正在运行,或者没有运行

如果有人使用它在另一个线程上运行某些东西,那么将布尔值标记为volatile您应该在
最后{}
@HarryQ中设置
isRunning=false
,正如您看到的,有一个
mHandler.postDelayed()
的末尾尝试{}
,这意味着此方法会定期运行。因此,如果我们将
isRunning=false
放在
finally{}
中,在
isRunning
false
时第一次运行方法之后@AliKhaleqiYekta它取决于
isRunning
变量的定义。我的理解是,runnable在线程位于try块时运行,一旦退出,
isRunning=false
。考虑这个,如果在<代码> MtHunel.PtStabor(SDENDATA,TIME)中的延迟时间,<代码>非常大。在一段时间内,当前try块中的所有语句都已完成,而延迟的runnable尚未启动。在这样一个时期,
isRunnable
在我的理解中应该是
false