Как отменить таймер и обновить тот же таймер?

Я создаю приложение, которое вибрирует и издает звуковые сигналы каждые 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)

Может ли кто-нибудь помочь мне с этим кодированием. Где я неправ?

Ответы на вопрос(3)

Ваш ответ на вопрос