안드로이드 개발 질문/답변
(글 수 45,052)
Thread.sleep(10000); // 은 10초 sleep인데요,
만약 시간을 6시간 혹은 12시간을 줘도 괜찮을까요?
너무 길어지면 자체적으로 죽인다거나 무리가 된다거나 하지 않을까 하는,
근본없은 불안감이 생겨서 질문드립니다. ^^
Thread.sleep(10000 * 6 * 60 * 12); // 은 12시간... 맞죠? ㅎ
2011.09.30 09:58:57
Thread.sleep() 은 동기화된 시간을 보장하지 않습니다. 이 부분은 관련자료도 많으니 찾아보세요.
즉, 해당시간동안 cpu 상태등에 따라 시간이 늘어지기도 합니다.
또한 아주 짧은 시간 sleep(1) 을 하면.. OS에 따라 달라지기도 합니다.
따라서 아주 짧은시간이나 아주 긴 시간을 한번에 sleep 시키는것은 아주 좋지 않은 방법입니다.
그래도 굳이 써야한다면, 여러번 나누어서 sleep을 수행해야 비교적 근사치에 접근하게 될 겁니다.
즉, loop 문 안에 sleep 을 넣으시고.. sleep 시간을 잘게 쪼개어.. (1분 ?).. sleep 후 원래 시작시간에서 현재시간을 빼면 전체 경과시간이 나올것이고....의도된 시간만큼 sleep 했으면 break 시키면 될듯 합니다.
그러면 오차가 1분여가 되겠지요.
또 다른 방법으로는 sleep 말고.. 알람매니저를 이용해서.. 예약시간이 되면 프로세스를 수행하도록 하면 될거구요.




무엇을 만들던간에 이만큼 재울일을 없을꺼라 생각합니다.. 저도 궁금하네요 =_=
개인적인 생각으로는 작동은 하되 죽지 않는다는 절대적인 보장은 없을꺼라생각됩니다..