ejemplo - show countdown timer android
Comprobando si CountDownTimer se está ejecutando (3)
He estado buscando un método para ver si un CountDownTimer se está ejecutando o no, pero no puedo encontrar la forma de hacerlo, cualquier ayuda sería muy apreciada
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();
}
Para eso, ¿cómo puedo verificar si mCountDown se está ejecutando actualmente?
Simplemente ponga una bandera boolean
que indique que por el siguiente código
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();
onTick es su devolución de llamada para un proceso en ejecución, puede establecer una propiedad para rastrear el estado.
isTimerRunning =false;
Después de start -> make it true;
Dentro de OnTick -> make it true
(no requerido en realidad, sino una doble comprobación) Dentro de OnFinish -> make it false;
use la propiedad isTimerRunning para rastrear el estado.
Compruebe si CountDownTimer se está ejecutando y también si la aplicación se está ejecutando en segundo plano.
@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();
}