마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

AsyncTask 사망선고 대체??????????

0 추천
SDK30 업데이트 후 AsyncTask 사망했는데

그래서 지금 Volley 로 작업하고있는데

다른 좋은 방법이있나요??????
show7777 (1,170 포인트) 님이 2021년 3월 5일 질문

1개의 답변

+1 추천
 
채택된 답변
AsyncTask는 메인쓰레드 -> 백그라운드 쓰레드 -> 메인쓰레드 이렇게 쓰레드 전환을 가능하게 해주는 비교적 짧은 작업에 사용되었습니다. 그리고 말씀하신대로 Android 11에서 deprecated되어서 더이상 지원이 안됩니다.

정확히 말씀드리자만 Volley는 AsyncTask의 대체가 아니고 HttpURLConnection의 대체입니다. 즉 Http networking을 도와주는 라이브러이 입니다. 이런 종류의 라이브러리로 업계 표준처럼 쓰이는 것은 Retrofit입니다. 주로 OkHttp3과 혼합해서 사용합니다.

그리고 AsyncTask처럼 백그라운드 작업을 도와줄 수 있는 대표주자로는 RxJava+RxAndroid, Kotlin Coroutines가 있습니다. 자바를 사용하신다면 RxJava, Kotlin을 사용하시다면 Kotlin Corountines를 사용하시면 되는데, 두가지다 런닝커브가 상당합니다.

하지만 RxJava같은 경우는 웬만한 랭귀지에서도 다 지원되는 ReactiveX라는 방식의(간단하게 말하면 Observable-Observer Pattern) 프로그래밍이기 때문에, 범용적으로 사용 가능한 방법이기도 합니다. Netflix가 최초로 발표를 했고, 자신들의 백엔드로 녹아들어가 있는 기술이기도 합니다. 상당히 안정적이고 쓸만한 기술이긴 한데, 안드로이드에서는 좀 무거운 편입니다. 무엇보다, 정확하게 사용하려면 굉장히 많은 공부를 요구합니다. 하지만 전 세계의 안드로이드 개발자라면 거의 모두다 사용하기 때문에 활용도도 높은 편이죠.
Kotlin Coroutines는 Kotlin에서만 지원되는 기능입니다. RxJava가 써드파티라면 이건 랭귀지에 탑재된 기능이기 때문에 Kotlin 으로 된 프로젝트라면 Coroutines가 자연스러운 선택이 될겁니다. 그리고 RxJava보다 가볍습니다. 아직 비교적 초창기 버전이라 계속 발전하고 있긴한데, RxJava만큼은 아니어도 배우는데 시간이 좀 걸리고, 개인적으로는 디버깅이 완전하게 지원되지 않아서 좀 짜증이 날 때가 있더라구요.
spark (224,800 포인트) 님이 2021년 3월 6일 답변
show7777님이 2021년 3월 8일 채택됨
ActiveX는 잘못 쓰신 것 같습니다. Reactive eXtension을 말씀하시려고 하신 거로 판단됩니다만..
아, 그렇네요. 고쳤습니다.
감사합니다!!!!!!!!!!!!!!!!!!!!!!!
...