Android(Kotlin)

Android thread, Handler, Looper

----___<<<<< 2021. 9. 14. 06:50

 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

 

Android 백그라운드 - Thread, Handler ,Looper의 차이

누가 Thread, Handler, Looper의 차이를 물어봣는데, 알고 있는데 선듯 대답을 하지 못해서 다시 정확하게 공부하기 위해서 글을 씁니다. Thread는 간단하게 말해서 하나의 독립적인 실행 흐름으로 생각

jeongupark-study-house.tistory.com

 

https://academy.realm.io/kr/posts/android-thread-looper-handler/

 

안드로이드 백그라운드 잘 다루기 Thread, Looper, Handler

안드로이드 UI는 기본적으로 싱글 스레드 모델로 작동하므로, 이 영향을 고려해 개발하지 않으면 애플리케이션의 성능이 저하될 수 있습니다. 따라서 메인 스레드에서 긴 작업을 하는 것을 피하

academy.realm.io

 

'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