일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 월간코드챌린지시즌3
- bootstrapModal
- php
- 코딩테스트
- java
- 월간코드챌린지시즌2
- 부트스트랩
- Programmers
- AJAX
- bootstrap
- 나머지가1
- 모달
- 코딩테스트연습
- Fullcalendar
- 스킬체크
- Summer/WinterCoding
- MSSQL
- Android
- REACT
- 동적웹페이지
- 백준
- level1
- SimpleDateFormat
- 연습문제
- 안드로이드
- modal
- Node
- androidstudio
- 스킬체크테스트
- 프로그래머스
- Today
- Total
개발하는 고양이 오이
3. [Android] Handler Deprecated 본문
기존에 작성되어있는 소스 코드를 분석하다가 생성자에 아무것도 넣어주지 않았던 Handler에 줄이 쳐져있었고, 확인해보니 해당 Handler가 Deprecated 된 것을 알았습니다.
"Default constructor in android.os.Handler is deprecated"
해당 문제에 대해 Android developers를 찾아보니 다음과 같은 이유로 deprecated 된것을 알았습니다.
https://developer.android.com/reference/android/os/Handler
이 생성자는 더 이상 사용되지 않습니다. 핸들러 생성 중 Looper를 암시적으로 선택하면 작업이 자동으로 손실되는 버그(Handler가 새 작업을 기대하지 않고 종료되는 경우), 충돌(Looper가 활성화되지 않은 스레드에서 핸들러가 생성되는 경우) 또는 경쟁 조건이 발생하는 버그가 발생할 수 있습니다. 핸들러가 연결된 스레드는 작성자가 예상한 것과 다릅니다. 대신 , {link android.view.View#getHandler} 등을 Executor사용하여 명시적으로 Looper를 사용 하거나 지정하세요 Looper#getMainLooper. 암시적 스레드 로컬 동작이 호환성 new Handler(Looper.myLooper())을 위해 필요한 경우 독자에게 명확하게 하기 위해 사용 합니다.
따라서 Handler 생성자에 Looper를 넣어서 사용해주면 해결됩니다.
Handler(Looper.getMainLooper())
감사합니다. ( ´・ᴗ・` )