안드로이드 runOnUiThread() 란?

쓰리원·2022년 6월 6일
0

Thread Usage

목록 보기
3/3
post-thumbnail

1. runOnUiThread() 란?

안드로이드 OS는 UI 자원에 Main Thread와 Sub Thread가 동시 접근하여 동기화 이슈를 발생시키는 것을 방지하기 위해 UI 리소스 사용은 UI Thread에서만 가능하도록 만들었습니다. 안드로이드에서 제공하는 Message나 Runnable 객체를 UI 스레드 쪽에서 사용하는 방법은 4가지가 있습니다.

  • Activity.runOnUiThread( )
  • Handler.post( )
  • View.post( )
  • AsyncTask

runOnUiThread와 Handler의 차이는 Handler는 post 방식을 통해 매번 이벤트를 발생시키지만, runOnUiThread는 현재 시점이 UI 스레드이면 바로 실행시켜서 좀 더 효율적이라고 할 수 있습니다.

Activity.java 코드에서 runOnUiThread()의 구현 코드 입니다. Thread.currentThread()로 현재 스레드가 UI 스레드인지 확인하고 맞으면 바로 실행하고, 틀리면 핸들러를 통해서 UI 스레드의 이벤트 큐로 post 하는 것을 볼 수 있습니다.

2. runOnUiThread() 적용

new Thread(new Runnable() {
    @Override
    public void run() {
        for(i = 0; i <= 100; i++) {
            // 현재 UI 스레드가 아니기 때문에 메시지 큐에 Runnable을 등록 함
            runOnUiThread(new Runnable() {
                public void run() {
                    // 메시지 큐에 저장될 메시지의 내용
                    textView.setText("runOnUiThread 님을 통해 텍스트 설정");
                }
            });
        }
    }
}).start();

3. reference

https://itmining.tistory.com/6?category=640759

profile
가장 아름다운 정답은 서로의 협업안에 있다.

0개의 댓글