안드로이드 심심풀이/응용

[안드로이드 스튜디오]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() 메소드를 사용하시면 되겠습니다~ 감사합니다!

 

 

반응형