Wie storniere ich den Timer und erneuere ihn?

Ich erstelle eine App, die alle 30 Sekunden vibriert und piept. Wenn ich mich abmelde, müssen die Vibrations- und Pieptöne abgebrochen werden. Wenn ich mich anmelde, sollten die Vibrations- und Pieptöne fortgesetzt werden.

HINWEIS: Es muss alle 30 Sekunden vibrieren und piepen, bis ich mich auslogge

In meiner App verwende ichTimerTask für diese Implementierung

Dies ist der Code für Vibration und PieptonTimerTask

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); 
}

Dies ist der Code, den ich im Abschnitt zum Abmelden verwende

public void stopvib() {
    if (Task != null) {
    //  Log.d("TIMER", "timer canceled");
        t.cancel();
        Task.cancel();
    }
}

Hinweis: Ich habe auch die entferntTask.cancel(); aber trotzdem bekomme ich den gleichen fehler

Mein Vibrationsalarm funktioniert einwandfrei, bevor ich mich abmelde und wieder anmelde. Ich erhalte eine Fehlermeldung

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)

kann mir jemand bei dieser codierung helfen. Was habe ich falsch gemacht?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage