我創建振動應用程序,併發出蜂鳴聲,每30秒,當我退出的振動和蜂鳴必須取消,當我登錄的振動和蜂鳴應該恢復。如何取消定時器並更新同一個定時器?
注:直到我登出
在我的應用我使用TimerTask
此實現
這是利用振動和蜂鳴代碼必須振動和蜂鳴每30秒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)
任何一個可以幫我這個編碼。我哪裏做錯了?
更新:在MyCustomTimer的run()方法中,你將調用playSound(); –