AsyncTask 정지
이번 포스팅에는 AsyncTask가 deprecated 된 것에 대한 이야기를 하려고 한다.
팀 프로젝트로 어플을 만드는 과정에서 Azure Face API를 사용하게 되었고 오픈소스를 찾으면서 하다 보니 비동기 AsyncTask를 사용하게 되었다.
하지만 이렇게 안드로이드 스튜디오에서 Android11, SDK30 이상에서 사용이 정지된 것을 확인하였고 왜 AsyncTask가 정지되었는지 알아보게 되었다.
아래는 안드로이드 오픈소스 헤더 부분에 달려있는 주석이다.
* <p>AsyncTask was intended to enable proper and easy use of the UI thread. However, the most
* common use case was for integrating into UI, and that would cause Context leaks, missed
* callbacks, or crashes on configuration changes. It also has inconsistent behavior on different
* versions of the platform, swallows exceptions from {@code doInBackground}, and does not provide
* much utility over using {@link Executor}s directly.</p>
간단히 요약하자면, 콘텍스트 누수가 발생되고, 콜백 또는 구성 변경 시 충돌 등의 문제점들이 많아 정지한다는 내용이었다.
AsyncTask의 문제
- 멀티스레딩을 더 복잡하게 만듦
- 잘못된 문서
- 과도한 복잡성
- 상속 남용
- 안전성
- 동시성 오해
등의 문제들이 많아 AsyncTask는 사용이 정지되었다.
AsyncTask의 대처
그래서 AsyncTask의 문제를 해결하기 위해서 Rxjava나 Coroutine를 공부해서 다시 적용해봐야겠다.
마치며
안드로이드 스튜디오를 처음으로 공부하면서 오픈 소스를 찾으면서 코딩을 하다 보니 지금 사용이 안되는 코드들이 존재하였다. 코드도 100% 이해도 되지않은상태에서 코딩을 하고 사용이 정지되고 하다보니 앞으로도 더 많은 난관을 만나겠지만 조금 더 하나씩 나의 것으로 만드는 시간을 가져야겠다.
출처
https://www.techyourchance.com/asynctask-deprecated/
반응형
'Android' 카테고리의 다른 글
[Android] 안드로이드 난독화 및 최적화하기 (0) | 2023.12.14 |
---|---|
[Android] 안드로이드 스튜디오에서 릴리즈 버전 테스트하기 (0) | 2023.12.13 |
[Android] collectAsState()와 collectAsStateWithLifecycle() 차이점 (0) | 2023.11.09 |
RxJava란 (0) | 2022.03.15 |
MVVM패턴 (0) | 2022.03.07 |