안드로이드에서 Runnable쓰레드는 어떻게 돌리나요?
조회수 7699회
안드로이드 에뮬레이터 화면에서 정해진 간격으로 똑같은 텍스트를 보여주는 애플리케이션을 개발하고 있는데요. 지금은 Handler 클래스를 쓰고 있습니다.
handler = new Handler();
Runnable r = new Runnable() {
public void run() {
tv.append("Hello World");
}
};
handler.postDelayed(r, 1000);
문제는 제가 앱을 실행시키면 텍스트가 한번만 표시됩니다. 왜그런걸까요?
1 답변
-
아래처럼 고쳐보세요.
handler = new Handler(); final Runnable r = new Runnable() { public void run() { tv.append("Hello World"); handler.postDelayed(this, 1000); } }; handler.postDelayed(r, 1000);
아니면 그냥 쓰레드를 쓸수도있습니다.
Thread thread = new Thread() { @Override public void run() { try { while(true) { sleep(1000); handler.post(this); } } catch (InterruptedException e) { e.printStackTrace(); } } }; thread.start();
핸들러는 계속 동작 하는게 아니기때문에 핸들러 내부에서 쓰레드가 계속 호출되게 메소드를 호출 해주셔야합니다.
댓글 입력