我想在特定条件下暂停倒数计时器。但是在我的代码中,一旦它开始,它就永远不会停止,即使mIntheGym是假的。请帮我解决这个问题。提前致谢。
这是我的代码如下。
TimerTask doAsynchronousTask1 = new TimerTask() {
@Override
public void run() {
handler1.post(new Runnable() {
public void run() {
try {
if (mIntheGym) {
mtextview.setText("counter starts");
mCountDownTimer1 = new CountDownTimer(mTimeLeftInMillis1, 500) {
@Override
public void onTick(long millisUntilFinished) {
mTimeLeftInMillis1 = millisUntilFinished;
updateCountDownText();
}
@Override
public void onFinish() {
}
}.start();
}
else {
mtextview.setText("stop counter");
if (mCountDownTimer1 != null) {
mCountDownTimer1.cancel();
}
}
} catch (Exception e) {
}
}
});
}
};
从描述中,您的逻辑代码不正确。如果要暂停/停止CountDownTimer
,则需要更改它。
TimerTask doAsynchronousTask1 = new TimerTask() {
@Override
public void run() {
handler1.post(new Runnable() {
public void run() {
try {
mCountDownTimer1 = new CountDownTimer(mTimeLeftInMillis1, 500) {
boolean started = false;
@Override
public void onTick(long millisUntilFinished) {
if (mIntheGym) {
if (!started) {
mtextview.setText("counter starts");
started = true;
}
mTimeLeftInMillis1 = millisUntilFinished;
updateCountDownText();
} else {
mtextview.setText("stop counter");
if (mCountDownTimer1 != null) {
mCountDownTimer1.cancel();
}
}
}
@Override
public void onFinish() {
}
}.start();
} catch (Exception e) {
}
}
});
}
};