안드로이드 심심풀이/응용
[안드로이드 스튜디오]TimerTask() 재사용
훈땅콩
2020. 12. 14. 16:34
반응형
저번 게시물에서는 TimerTask를 이용한 이미지 페이드 인, 페이드 아웃을 만들어 보았는데요!
재사용을 하면 튕기는 오류가 발생하게 되어 이렇게 글을 쓰게 되었습니다!
저번 게시물에 Stop_Period 메소드를 통해 timer.cancel()을 한후 다시 timer.schedule을 사용하게 된다면 이미 TimerTask가 준비중이라는 오류와 함께 앱이 튕기게 됩니다!
timer를 초기화 했음에도 불구하고 그런식으로 튕기는 이유를 찾던 중 TimerTask 또한 초기화를 해줘야 한다는 것을 알게 되었습니다!
private void SetTask(){
try {
addTask = new TimerTask() {
@Override
public void run() {
Message msg = handler.obtainMessage();
handler.sendMessage(msg);
}
};
}catch (Exception ignored){
}
}
final Handler handler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(@NonNull Message message) {
// 하려던 동작
}
});
위와 같이 새롭게 TimerTask를 부여하는 메소드를 만들어 줍니다!
TimerTask 안에 run 부분에는 handler를 넣어주시고 handler에서 하려던 반복 동작을 넣어주시면 완료!
이렇게 선언을 해주고 timer를 재시작 할때마다 SetTask() 메소드를 사용하시면 되겠습니다~ 감사합니다!
반응형