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?