>Java >java지도 시간 >Android의 `runOnUiThread`를 잘못 사용하면 UI가 응답하지 않는 이유는 무엇입니까?

Android의 `runOnUiThread`를 잘못 사용하면 UI가 응답하지 않는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-23 20:54:11856검색

Why Does Incorrect Use of Android's `runOnUiThread` Lead to Unresponsive UI?

Android의 runOnUiThread 이해

Android 개발에서 UI 스레드는 사용자 상호 작용을 처리하고 사용자 인터페이스를 업데이트하는 역할을 담당합니다. 모든 UI 작업이 UI 스레드에서 수행되도록 하려면 runOnUiThread 메서드가 일반적으로 사용됩니다.

제공된 코드 조각에서는 별도의 스레드 내에서 UI를 업데이트하려고 시도합니다. runOnUiThread를 사용합니다. 그러나 현재 구현이 올바르지 않아 버튼 클릭 시 응답하지 않는 동작이 발생합니다. 이유는 다음과 같습니다.

runOnUiThread의 잘못된 사용

runOnUiThread 메서드는 Runnable 인스턴스를 인수로 받아들입니다. 코드에서 현재 활동에 실행 가능 항목을 구현하는 대신 Thread(Runnable)을 통해 새 스레드를 잘못 생성하고 있습니다. 이로 인해 UI 이벤트 처리에 필수적인 루퍼 없이 별도의 스레드가 생성됩니다.

수정된 코드

runThread 메소드는 다음과 같습니다.

private void runThread() {

    new Thread() {
        public void run() {
            while (i++ < 1000) {
                try {
                    runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            btn.setText("#" + i);
                        }
                    });
                    Thread.sleep(300);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
    }.start();
}
수정된 코드에서는 새로운 스레드가 생성되고, 하지만 해당 스레드 내에서

runOnUiThread가 호출되어 UI 스레드의 UI 요소를 업데이트합니다. runOnUiThread에 전달된 Runnable 인스턴스에는 버튼의 텍스트를 업데이트하는 코드가 포함되어 있습니다.

runOnUiThread를 올바르게 사용하면 모든 UI- 관련 작업은 메인 UI 스레드에서 발생하여 UI 정지를 방지하고 응답성을 보장합니다.

위 내용은 Android의 `runOnUiThread`를 잘못 사용하면 UI가 응답하지 않는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.