마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

UI 스레드 외부에서 Android UI 도구 키트에 액세스하지 마세요. 에 대한 스레드 질문입니다.

0 추천
https://developer.android.com/guide/components/processes-and-threads#Threads

 

위의 문서에서 볼 수 있듯이, Ui Thread에서는 Ui component를 조작하면 안된다고 합니다.

그런데 제가 작성한 코드에서는 TextView에 다른 스레드에서 setText 메소드를 사용해도 오류가 나지 않습니다.

웹뷰를 사용하면서, MainActivity에서 별도의 Layout에 있는 TextView에 값을 넣어주는 작업입니다.

그리고 해당 Layout은 MainActivity에서 보여주는 화면은 아닙니다. (출력 시 양식을 구성하는 레이아웃입니다.)

이런 상황에서 Layout의 TextView가 변경 되어도 오류가 나질 않는데요.

 

[UI 스레드 외부에서 Android UI 도구 키트에 액세스하지 마세요.]가 의미하는 바는, 현재 화면에서 보여지는 Activity에 종속된 View를 조작하면 안되나, 종속되지 않은 다른 View는 조작해도 상관없다. 라고 이해해도 괜찮을까요?

 

구현한 소스는 잘 작동하지만, 추후에 어떤 오류가 있을지 몰라 질문드립니다.

 

감사합니다.
BNAA (140 포인트) 님이 2021년 4월 21일 질문

2개의 답변

0 추천

해당 링크에 이렇게 나와 있네요.

Additionally, the Android UI toolkit is not thread-safe. So, you must not manipulate your UI from a worker thread—you must do all manipulation to your user interface from the UI thread. Thus, there are simply two rules to Android's single thread model:

worketr thread = background thread 입니다. UI thread = Main therad이구요. 당연히 background thread 에서 UI에 접근하면 앱이 크래쉬될 겁니다 Main  thead에서만 접근해야 합니다.

spark (227,470 포인트) 님이 2021년 4월 21일 답변
0 추천
Do not access the Android UI toolkit from outside the UI thread

UI Thread(보통Main Thread) 밖에서 Android UI(View)를 조작 하지 말라는 의미라고 생각됩니다.

UI Thread 밖은 보통 backgrond thread를 의미합니다. 해댱 영역에서는  Android UI를 접근 하면 안됩니다.

backgrond thread에서 UI를 조작하려면 Handler, Activity.runOnUiThread() 등을 사용하여 처리하시면 됩니다.
racy (1,540 포인트) 님이 2021년 4월 21일 답변
racy님이 2021년 4월 21일 reshown
...