개발하는 고양이 오이

3. [Android] Handler Deprecated 본문

Android

3. [Android] Handler Deprecated

Cucum 2022. 1. 12. 10:31

기존에 작성되어있는 소스 코드를 분석하다가 생성자에 아무것도 넣어주지 않았던 Handler에 줄이 쳐져있었고, 확인해보니 해당 Handler가 Deprecated 된 것을 알았습니다.

 

 

"Default constructor in android.os.Handler is deprecated"

 

해당 문제에 대해 Android developers를 찾아보니 다음과 같은 이유로 deprecated 된것을 알았습니다.

https://developer.android.com/reference/android/os/Handler

 

Handler  |  Android Developers

 

developer.android.com

 

이 생성자는 더 이상 사용되지 않습니다. 핸들러 생성 중 Looper를 암시적으로 선택하면 작업이 자동으로 손실되는 버그(Handler가 새 작업을 기대하지 않고 종료되는 경우), 충돌(Looper가 활성화되지 않은 스레드에서 핸들러가 생성되는 경우) 또는 경쟁 조건이 발생하는 버그가 발생할 수 있습니다. 핸들러가 연결된 스레드는 작성자가 예상한 것과 다릅니다. 대신 , {link android.view.View#getHandler} 등을 Executor사용하여 명시적으로 Looper를 사용 하거나 지정하세요 Looper#getMainLooper. 암시적 스레드 로컬 동작이 호환성 new Handler(Looper.myLooper())을 위해 필요한 경우 독자에게 명확하게 하기 위해 사용 합니다.

 

따라서 Handler 생성자에 Looper를 넣어서 사용해주면 해결됩니다.

 

Handler(Looper.getMainLooper())

 

 

 

감사합니다. ( ´・ᴗ・` )