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


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

무슨말이냐면,

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

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

  • 2016년 05월 27일에 작성됨

조회수 89


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);
}

  • 2016년 05월 28일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close