안드로이드 개발 질문/답변
(글 수 45,052)
제가 만든 Activity 에서 intent를 보내여 동영상을 재생시킵니다.
동시에 Thread.sleep(10689389) 를 줘서 동영상이 끝나기를 기다립니다.
10689389 milli seconds는 동영상 재생시간으로 약 3시간 정도 됩니다.
하지만 Activity에서는 sleep 다음에 Log 문을 넣어서
Sleep 이후 동작이 진행이 되는지 확인해 봤는데, Log 문은 실행이 안되었네요.
왜 Thread.sleep 에서 동작이 멈쳤는지 아시는 분 혹시 계신가요 ㅠ.ㅠ




Thread.sleep()으로 3시간을 멈추는게 효과적인 방법 같진 않습니다. Thread.sleep() 메소드는 언제든지 interrupt 될 수 있고, 그러면 예정된 시간을 지킬 수 없기 때문입니다. 동영상이 끝났는지를 확인하는 방법으로 논리 구조를 변경하면 어떨까요? 동영상을 잠시 일시정지하거나 뒤로가기 하거나, 그러면 시간을 예측할 수 없지 않을까요?
그래도 반드시 일정 시간 이후에 특정 작업을 실행하고자 한다면,
1) 일반적인 자바의 처리 방법으로 java.util.Timer 와 TimerTask 클래스를 사용해 보시는건 어떨까요?
2) 아니면 안드로이드 SDK에서 제공하는 Handler 클래스의 sendMessageAtTime(android.os.Message, long), sendMessageDelayed(android.os.Message, long), postAtTime(java.lang.Runnable, long), postDelayed(java.lang.Runnable, long) 등의 다양한 메소드도 추천합니다.