주기적으로 딜레이를 주려면 어떻게해야하죠?
조회수 1713회
status라고 하는 변수가 있는데요. 이 변수의값을보고 특정 텍스트를 띄우려고하는데요. 이때 약간의 딜레이를 주고 싶습니다.
무슨말이냐면,
- 변수 값 확인
- 텍스트 표시
- 10초 딜레이
- 변수 값 확인
- 텍스트 표시
- 15초 딜레이
이런식으로 딜레이 주는 시간도 변경가능하고 표시되는 텍스트는 한번 설정되게 하고싶은데 Thread.sleep(time delay)도 써봤는데 안됩니다. 좋은 방법 없을까요?
1 답변
-
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); }
댓글 입력