주기적으로 딜레이를 주려면 어떻게해야하죠?
android
status라고 하는 변수가 있는데요. 이 변수의값을보고 특정 텍스트를 띄우려고하는데요. 이때 약간의 딜레이를 주고 싶습니다.
무슨말이냐면,
- 변수 값 확인
- 텍스트 표시
- 10초 딜레이
- 변수 값 확인
- 텍스트 표시
- 15초 딜레이
이런식으로 딜레이 주는 시간도 변경가능하고 표시되는 텍스트는 한번 설정되게 하고싶은데 Thread.sleep(time delay)도 써봤는데 안됩니다. 좋은 방법 없을까요?
-
2016년 05월 27일에 작성됨
조회수 392
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);
}
-
2016년 05월 28일에 작성됨
출처: https://stackoverflow.com/questions/6242268 이 질문은 저작자표시-동일조건변경허락(https://creativecommons.org/licenses/by-sa/3.0/deed.ko) 라이센스로 이용할 수 있습니다. 장대엽 2018.3.20 10:51