안드로이드에서 Runnable쓰레드는 어떻게 돌리나요?


안드로이드 에뮬레이터 화면에서 정해진 간격으로 똑같은 텍스트를 보여주는 애플리케이션을 개발하고 있는데요. 지금은 Handler 클래스를 쓰고 있습니다.

handler = new Handler();
Runnable r = new Runnable() {
    public void run() {
        tv.append("Hello World");               
    }
};
handler.postDelayed(r, 1000);

문제는 제가 앱을 실행시키면 텍스트가 한번만 표시됩니다. 왜그런걸까요?

  • 2016년 05월 27일에 작성됨

조회수 332


1 답변


좋아요
0
싫어요
채택취소하기

아래처럼 고쳐보세요.

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();

핸들러는 계속 동작 하는게 아니기때문에 핸들러 내부에서 쓰레드가 계속 호출되게 메소드를 호출 해주셔야합니다.

  • 2016년 05월 28일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close