Android를 개발하다 보면 한번씩은 Thread, Hanlder, Looper를 들어보고 사용해봅니다.
얘네들이 Main Thread말고 별도로 Thread에서 작업한다는 것을 알겠는데 뭐가 다른지 한번 알아보겠습니다.
일단 안드로이드 앱을 실행하면 메인 액티비티를 메모리로 올려 프로세스를 들며 메인 쓰레드(UI Thread)가 생성됩니다.
그러면 메인 쓰레드에서 모든 것을 다 하면 되는데 왜 안할까? 를 생각해보면
긴 시간이 걸리는 작업(네트워크 통신)등을 한다면 애플리케이션 반응성이 낮아지고 ANR 상태가 발생할 수 있습니다.
때문에, Looper와 Handler를 사용합니다.
메인 쓰레드는 내부적으로 Looper를 가지고, 그 안에 Message Queue가 선입선출 형태로 보관됩니다.
Looper는 Message Queue에서 받받은 Message나 runnable객체를 Handler가 처리하도록 전달합니다.
Handler는 다른 스레드로부터 메세지를 받아서 Message Queue에 넣는 스레드간의 통신 장치입니다.
-참조
https://jeongupark-study-house.tistory.com/54
https://academy.realm.io/kr/posts/android-thread-looper-handler/
'Android(Kotlin)' 카테고리의 다른 글
Android LruCache kotlin (0) | 2021.10.06 |
---|---|
Simple ViewPager (0) | 2021.10.01 |
Shared Preferences (0) | 2021.09.10 |
could not find org.jetbrains.kotlin:kotlin-stdlib-jre7:1.3.61. (0) | 2021.09.10 |
Android Mockito example (0) | 2021.09.10 |