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)
을에 geting하고 로그인합니다. 나는 어디로 잘못 갔는가?
업데이트 : MyCustomTimer의 run() 메소드에서 playSound(); –