Java Android-检查Runnable是否正在运行
我想检查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);
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
。