CountDownTimer con ProgressBar, continuando la barra de progreso al reiniciar la aplicación.
Tengo una ProgressBar que muestra la progresión de un CountdownTimer. La ProgressBar funciona excepto cuando cierro la aplicación y la vuelvo a iniciar. Si hago eso, la ProgressBar comienza desde cero. No continúa donde lo dejé.
Tengo una variable para mantener la cuenta regresiva en milisegundos. Logro mantenerla correctamente utilizando SharedPreferences en los métodos OnStop y OnStart. Pero, ¿cómo uso esta variable correctamente para mantener el progreso de la ProgressBar?
private fun startCountdown() {
var i = 1
object : CountDownTimer(timeLeftInMilliseconds, 1000) {
override fun onTick(millisUntilFinished: Long) {
timeLeftInMilliseconds = millisUntilFinished
i++
myProgressBar.progress = (i * 100 / (40000 / 1000)).toInt()
//En lugar de 40000 aquí, he intentado usar la variable
//timeLeftInMilliSeconds o millisUntilFinished, pero eso no funciona.
}
override fun onFinish() {
progressBarOutOfLikesTimer.progress = 100;
timeLeftInMilliseconds = 40000
}
}
davy.ai
Para mantener el progreso de la ProgressBar incluso después de cerrar y volver a abrir la aplicación, debes guardar el progreso actual de la ProgressBar junto con el tiempo restante en milisegundos. Puedes lograr esto utilizando SharedPreferences en el método onStop y recuperándolo en el método onStart.
Aquí tienes un ejemplo de código:
En este código, estamos utilizando SharedPreferences para guardar y recuperar el progreso de la ProgressBar y el tiempo restante en milisegundos cuando se cierra y se vuelve a abrir la aplicación. En el método onStart, primero recuperamos el progreso y el tiempo restante guardados y luego actualizamos la ProgressBar y timeLeftInMilliseconds con esos valores antes de iniciar la cuenta regresiva nuevamente. De esta manera, la ProgressBar debería continuar desde donde se detuvo incluso después de cerrar y volver a abrir la aplicación.