Как отменить таймер и обновить тот же таймер?
Я создаю приложение, которое вибрирует и издает звуковые сигналы каждые 30 секунд, и когда я выхожу из системы, вибрация и звуковой сигнал должны быть отменены, а когда я вхожу, вибрация и звуковой сигнал должны возобновляться.
ПРИМЕЧАНИЕ: он должен вибрировать и подавать звуковой сигнал каждые 30 секунд, пока я не выйду из системы.
В моем приложении я используюTimerTask
для этой реализации
это код для вибрации и звукового сигнала, используя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);
}
Это код, который я использую в разделе выхода
public void stopvib() {
if (Task != null) {
// Log.d("TIMER", "timer canceled");
t.cancel();
Task.cancel();
}
}
Примечание: я также удалилTask.cancel();
но все равно я получаю ту же ошибку
Моя вибрация работает нормально перед выходом из системы и повторным входом в систему. Я получаю сообщение об ошибке
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)
Может ли кто-нибудь помочь мне с этим кодированием. Где я неправ?