본문 바로가기
Android

Main(UI) Thread 란?, Worker Thread 란?

by 안솝우화 2021. 3. 26.
반응형

안드로이드에는 2가지 종류의 스레드가 있다. 위의 제목에서 유추할수 있듯이 바로 메인 스레드(또는 UI스레드 라고도 불린다), 워커 스레드이다.

 


 

저입니다! Main Thread!

메인 스레드에서만 UI 작업을 해야 합니다
앞에서 언급했듯이 2개의 종류의 스레드가 있습니다. 왜 메인 스레드에서만 ui작업을 해야할까요?
정답은 간단합니다. 두 스레드가 같은 ui자원에 접근해 작업하던중 서로 다른 수정을 요구하게 되면 수행해야 할 작업이 무엇인지 모호해집니다.
하지만 걱정마세요! 이미 안드로이드에서는 워커 스레드에서 ui작업을 하려고 시도하면 에러를 발생시킵니다

메인 스레드에서는 긴 시간의 작업을 하지 않는게 좋습니다
메인스레드는 하나만 존재하고 작업들을 순차적으로 진행하게 됩니다.
때문에 앞에서 30초짜리 작업을 한다고 가정하면 30초 동안 ui를 불러오지 못하고 30초 뒤에서야 불러오게 됩니다.
그리고 이렇게 되면 화면에 '응답 없음' 이라는 팝업이 뜨게 될것이다

 


 

저입니다! Worker Thread!

시간이 오래 걸리는 작업을 여기서!
앞에서 설명한 것 처럼 메인스레드에서는 시간이 오래 걸리는 작업을 하지 않는것이 좋습니다.
그렇다면 그런 작업은 어디서 할까요? 네 맞습니다, 워커스레드에서 하시면 됩니다

UI수정 정말 안될까요..?
작업하다 보면 워커스레드에서 ui수정을 해야 할 때가 있을 수 있습니다.
그렇다면 어떻게 해야할까요? 정답은 Handler입니다!
핸들러가 생성된 스레드에서 작업을 순차적으로 처리해 줍니다

반응형

'Android' 카테고리의 다른 글

RecyclerView 란?  (0) 2021.04.03
Databinding과 Viewbinding의 차이점  (0) 2021.04.01
Firebase addValueEventListener() 사용후 문제점  (0) 2021.03.26
Data Binding 이란?  (0) 2021.03.25
View Model을 왜 쓸까?  (0) 2021.03.25