¿Cómo cancelar el temporizador y renovar el mismo temporizador?
Estoy creando una aplicación que vibra y emite un pitido cada 30 segundos, y cuando cierro la sesión, se deben cancelar y cuando se inicia sesión, se debe reanudar la vibración y el pitido.
NOTA: debe vibrar y sonar cada 30 segundos hasta que cierre la sesión
En mi aplicación estoy usandoTimerTask
para esta implementación
Este es el código para vibrar y usar pitidos.TimerTask
static TimerTask Task;
final static Handler handler = new Handler();
static Timer t = new Timer();
public static void vib() {
Task = new TimerTask() {
public void run() {
handler.post(new Runnable() {
public void run() {
Vibrator vibrator = (Vibrator) ApplicationUtils.getContext().getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(3000);
playSound();
Log.d("TIMER", "Timer set on");
}
});
}
};
t.schedule(Task, 0, 30000);
}
Este es el código que estoy usando en la sección de cierre de sesión
public void stopvib() {
if (Task != null) {
// Log.d("TIMER", "timer canceled");
t.cancel();
Task.cancel();
}
}
Nota: también quité elTask.cancel();
pero sigo recibiendo el mismo error
Mi vibración funciona bien antes de cerrar sesión y volver a iniciar sesión. Aparece un error.
java.lang.IllegalStateException: Timer was cancelled
at java.util.Timer.scheduleImpl(Timer.java:562)
at java.util.Timer.schedule(Timer.java:481)
at com.vib(AlertListActivity.java:724)
¿Puede alguien ayudarme con esta codificación. ¿Qué hice mal?