나는 runOnUiThread
과 Handlers
을 보았지만 나에게도 여전히 사실과 다른 점은 의심 스럽다.Handler와 runOnUiThread의 차이점은 무엇입니까?
UI를 업데이트하는 가장 좋은 방법은 무엇입니까? runOnUiThread
또는 Handler
을 사용해야합니까?
이미 link을 통과했습니다. 아직도 차이를 정당화 할 수 없습니다.
미리 감사드립니다.
나는 runOnUiThread
과 Handlers
을 보았지만 나에게도 여전히 사실과 다른 점은 의심 스럽다.Handler와 runOnUiThread의 차이점은 무엇입니까?
UI를 업데이트하는 가장 좋은 방법은 무엇입니까? runOnUiThread
또는 Handler
을 사용해야합니까?
이미 link을 통과했습니다. 아직도 차이를 정당화 할 수 없습니다.
미리 감사드립니다.
runOnUiThread는 기본 UI 핸들러를 사용하는 방법이므로 기본적으로 동일합니다. 유일한 차이점은 ui 핸들러 내부에서 호출하는 경우 게시 대신 실행하는 것입니다.
public final void runOnUiThread(Runnable action) {
if (Thread.currentThread() != mUiThread) {
mHandler.post(action);
} else {
action.run();
}
}
처리기는 이벤트 대기열을 구현하는 좋은 방법입니다. 주 스레드에서 실행할 필요가 없으며, 자신 만의 루퍼를 설정할 수 있습니다. RunOnUiThread는 기본적으로 지름길이기 때문에 실제로 핸들러를 시작하지 마십시오.
핸들러는 선언 된 자체를 등록합니다. 또는 수동으로 루퍼를 설정할 수도 있습니다.
처리기는 여러 번 데이터를 주 스레드에 게시하려는 경우 특히 유용합니다.
runOnUiThread는 활동 방식입니다. 따라서 UI 스레드를 업데이트해야하는 경우 다음과 같은 방법으로 코드를 작성해야합니다.
runOnUiThread(new Runnable() {
@Override
public void run() {
// update the ui
}
});
따라서 재사용 가능성은 없습니다.
예를 들어 다운로드하는 파일의 상태를 업데이트하려고합니다. 위의 메소드를 여러 번 작성해야합니다.
그러나 Handler 개체를 사용하면 동일한 Handler 개체를 사용하여 UI를 여러 번 업데이트합니다.
나는이 다른 것을 알고있다. 만약 당신이 알고 있으면 대답하라. –
"그 외에"는 무엇을 의미합니까? 처리기를 사용해야하는 경우 각 처리기에 대한 메모리를 할당해야하며 사용자가 이미 ui 처리기에서 작업 중인지 여부를 제어해야합니다. 그 방법 자체가 당신을 위해 그것을합니다. –