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

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

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

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

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

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

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

작성한 답변에 다른 개발자들이 댓글을 작성하거나 댓글에 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.