Android 检查倒计时是否正在运行
我一直在寻找一种方法,看看是否倒计时运行或没有,但我找不到一种方法,任何帮助将不胜感激Android 检查倒计时是否正在运行,android,timer,countdowntimer,Android,Timer,Countdowntimer,我一直在寻找一种方法,看看是否倒计时运行或没有,但我找不到一种方法,任何帮助将不胜感激 if (position == 0) { mCountDown = new CountDownTimer((300 * 1000), 1000) { public void onTick(long millisUntilFinished) { mTextField.setText("seconds remaining: "
if (position == 0) {
mCountDown = new CountDownTimer((300 * 1000), 1000) {
public void onTick(long millisUntilFinished) {
mTextField.setText("seconds remaining: "
+ millisUntilFinished / 1000);
}
public void onFinish() {
mTextField.setText("0:00");
String path = "/sdcard/Music/ZenPing.mp3";
try {
mp.reset();
mp.setDataSource(path);
mp.prepare();
mp.start();
} catch (IOException e) {
Log.v(getString(R.string.app_name),
e.getMessage());
}
}
}.start();
}
为此,如何检查mCountDown当前是否正在运行?单击正在运行的进程的回调,您可以设置一个属性来跟踪状态
isTimerRunning =false;
在start->实现后代码>
内部OnTick->make it true
(实际上不需要,但需要仔细检查)
内部OnFinish->使其为假代码>
使用isTimerRunning属性来跟踪状态。只需放置一个布尔
标志,通过以下代码指示
isTimerRunning =false;
boolean isRunning = false;
mCountDown = new CountDownTimer((300 * 1000), 1000) {
public void onTick(long millisUntilFinished) {
isRunning = true;
//rest of code
}
public void onFinish() {
isRunning= false;
//rest of code
}
}.start();
检查倒计时是否正在运行,以及应用程序是否在后台运行
@Override
protected void onCreate(Bundle savedInstanceState) {
...
myButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
myButton.setText("Button clicked");
countDownTimer = new CountDownTimer( 3000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
//After turning the Smartphone the follow both methods do not work anymore
if (!runningBackground) {
myButton.setText("Calc: " + millisUntilFinished / 1000);
myTextView.setText("Calc: " + millisUntilFinished / 1000);
}
}
@Override
public void onFinish() {
if (!runningBackground) {
//Do something
}
mTextMessage.setText("DONE");
runningBackground = false;
running = false;
}
};
//timer started
countDownTimer.start();
running = true;
}
});
}
@Override
protected void onResume() {
super.onResume();
runningBackground = false;
}
@Override
protected void onPause() {
runningBackground = true;
super.onPause();
}
你不能使用全局布尔值吗?调用new CountDownTimer时将in设置为TRUE,将onFinish()设置为FALSE?能否详细说明您想要实现的目标?请注意,在onTick()和onFinish()方法中使用布尔变量来指示计时器的状态并不清楚。因为可以通过cancel()方法停止计时器。在这种情况下,您的变量仍然为true并指示错误的状态。此解决方案并不完全准确,因为调用mCountDown.cancel()不会触发onFinish(),因此isRunning将为true,但计时器不会像@Cris提到的那样运行。无论何时调用mCountDown.cancel()