[안드로이드] Main Thread

Chloe Choi·2021년 3월 29일
0

안드로이드

목록 보기
8/17

안드로이드 시스템은 main thread에서 app 구성요소(Button, CheckBox, TextView 등의 UI도구 키트구성요소) 생성 및 조작을 진행한다. 그래서 main thread를 UI Thread라고 부르기도 한다!

UI 도구 키트는 thread-safe하지 않아서 main thread에서만 접근할 수 있게 한다. 결국, UI 동작은 단일 thread로 동작하는 구조를 갖게된다.

main thread가 이런 책임을 갖고있기 때문에 시간이 오래걸리는 작업을 UI thread에서 진행한다면 반응성이 낮아진다.

따라서, long running task는 별도의 thread에서 처리해야 반응성이 좋은 프로그램을 만들 수 있다!!! 만약 long running task를 main thread에서 처리한다면 어떻게 될까? ANR 에러가 발생한다.

ANR(Application Not Responding)
발생상황
1. 앱이 5초 이상 사용자의 입력에 반응하지 않을 때(main thread)
2. 브로드캐스트 리시버가 10초 내로 리턴하지 않을 때
👉 OS가 위 대화상자를 띄우고 앱을 강제 종료시킴
해결방법
main thread에서 다른 일이 진행되고 있어서 사용자의 입력에 반응하지 못하는 거다. 따라서, main thread에서는 최소한의 일만 처리하고 다른건 별도의 thread에서 처리하면 해결!


예전에 사용하던 AsyncTask 관련 그림인데 UI 관련 처리는 main thread에서 하는걸 확인할 수 있다!

profile
똑딱똑딱

0개의 댓글