-7

나는 runOnUiThreadHandlers을 보았지만 나에게도 여전히 사실과 다른 점은 의심 스럽다.Handler와 runOnUiThread의 차이점은 무엇입니까?

UI를 업데이트하는 가장 좋은 방법은 무엇입니까? runOnUiThread 또는 Handler을 사용해야합니까?

이미 link을 통과했습니다. 아직도 차이를 정당화 할 수 없습니다.

미리 감사드립니다.

답변

3

runOnUiThread는 기본 UI 핸들러를 사용하는 방법이므로 기본적으로 동일합니다. 유일한 차이점은 ui 핸들러 내부에서 호출하는 경우 게시 대신 실행하는 것입니다.

public final void runOnUiThread(Runnable action) { 
    if (Thread.currentThread() != mUiThread) { 
     mHandler.post(action); 
    } else { 
     action.run(); 
    } 
} 
1

처리기는 이벤트 대기열을 구현하는 좋은 방법입니다. 주 스레드에서 실행할 필요가 없으며, 자신 만의 루퍼를 설정할 수 있습니다. RunOnUiThread는 기본적으로 지름길이기 때문에 실제로 핸들러를 시작하지 마십시오.

+0

나는이 다른 것을 알고있다. 만약 당신이 알고 있으면 대답하라. –

+0

"그 외에"는 무엇을 의미합니까? 처리기를 사용해야하는 경우 각 처리기에 대한 메모리를 할당해야하며 사용자가 이미 ui 처리기에서 작업 중인지 여부를 제어해야합니다. 그 방법 자체가 당신을 위해 그것을합니다. –

1

핸들러는 선언 된 자체를 등록합니다. 또는 수동으로 루퍼를 설정할 수도 있습니다.

처리기는 여러 번 데이터를 주 스레드에 게시하려는 경우 특히 유용합니다.

runOnUiThread는 활동 방식입니다. 따라서 UI 스레드를 업데이트해야하는 경우 다음과 같은 방법으로 코드를 작성해야합니다.

 runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        // update the ui 

       } 
      }); 

따라서 재사용 가능성은 없습니다.

예를 들어 다운로드하는 파일의 상태를 업데이트하려고합니다. 위의 메소드를 여러 번 작성해야합니다.

그러나 Handler 개체를 사용하면 동일한 Handler 개체를 사용하여 UI를 여러 번 업데이트합니다.

관련 문제