주기적으로 딜레이를 주려면 어떻게해야하죠?

status라고 하는 변수가 있는데요. 이 변수의값을보고 특정 텍스트를 띄우려고하는데요. 이때 약간의 딜레이를 주고 싶습니다.

무슨말이냐면,

  1. 변수 값 확인
  2. 텍스트 표시
  3. 10초 딜레이
  4. 변수 값 확인
  5. 텍스트 표시
  6. 15초 딜레이

이런식으로 딜레이 주는 시간도 변경가능하고 표시되는 텍스트는 한번 설정되게 하고싶은데 Thread.sleep(time delay)도 써봤는데 안됩니다. 좋은 방법 없을까요?

1답변

  • 좋아요

    0

    싫어요
    채택취소하기

    Handler의 postDelayed 메소드를 쓰시면 될것같습니다. 이건 main UI쓰레드에서 특정 코드에 지정된 딜레이를 주는 코드인데요 . 아마 원하시는 문제는 해결할수있을겁니다.

    아래 코드를 참고해서 적절히 수정해보세요.

    private int mInterval = 5000; // 5초가 기본값인데 변경하시면 됩니다. 
    private Handler mHandler;
    
    @Override
    protected void onCreate(Bundle bundle) {
    
        // your code here
    
        mHandler = new Handler();
        startRepeatingTask();
    }
    
    Runnable mStatusChecker = new Runnable() {
        @Override 
        public void run() {
              try {
                   updateStatus(); //이 함수에서 mInterval의 값을 바꾸시면 됩니다. 
              } finally {
                   // 무조건 호출되는 코드입니다. 
                   // updateStatus에서 예외가 발견되도 아래의 코드는 실행됩니다. 
                   mHandler.postDelayed(mStatusChecker, mInterval);
              }
        }
    };
    
    void startRepeatingTask() {
        mStatusChecker.run(); 
    }
    
    void stopRepeatingTask() {
        mHandler.removeCallbacks(mStatusChecker);
    }
    
    

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.