Good bye, AsyncTask

2019년 11월 8일 6시 54분 Charles Munger에 의해 공식적으로 AsyncTask 사망 선고가 내려졌다.

AsncyTask는 백그라운드 작업과 UI간 상호작용을 단순화해주는 도구였다. 구글 안드로이드 튜토리얼에서도 종종 등장했기 때문에, 수년간 많은 개발자들이 이를 배우고 사용해왔다.

실제로 AsyncTask는 비동기 작업을 단순화하는데 많은 도움이 되지만, Deprecated되었다는 것은 완벽하다는 뜻은 아닐 것이다.

AsyncTask 문제점

많은 애플리케이션이 대표적으로 가지는 긴 백그라운드 작업이 서버로부터 데이터를 가져오는 것이다. 네트워크 작업은 시간이 오래 걸릴 수 있으므로 비동기적으로 요청하는 것이 중요하다. 작업이 완료되면 UI를 업데이트 할 수 있다. 그러나 네트워크 요청이 완료 될 때 UI와 관련 된 부분이 더 이상 존재하지 않아 충돌 또는 버그가 발생할 수 있는 근본적인 문제가 있다. AsyncTask 전체적인 프로세스를 단순화 하지만 안드로이드의 생명주기를 신경쓰지 않는다. 그렇기 때문에 액티비티나 프레그먼트가 재생성되거나 파괴되었을 때 마무리 작업에 대한 내용이 보호되지 않는다. 

AsyncTask가 완전히 사라진다면..?

사용자 입장에서는 AsyncTask가 Deprecated되거나 사라진다는게 큰 의미가 없겠지만, 개발자에게는 의미가 있다. 오래된 코드베이스를 유지관리 하는 경우 AsyncTask를 사용하는 부분을 모두 다른 대체제로 변경해야만 한다. 써드파티 라이브러리가 AsyncTask를 사용하는 경우 해당 라이브러리의 업데이트가 이루어 지지 않는다면, 라이브러리의 변경도 고려해야 할 것 이다.

AsyncTask의 문제와 한계로 인해, 이미 실무에서는 RxJava 및 Coroutine과 같은 라이브러리를 많이 사용하고 있다. 개발자들 사이에서 이와 같은 라이브러리가 인기가 많기 때문에, 이제 안드로이드를 막 배우기 시작하는 개발자를 제외하고는 AsyncTask를 사용할 일이 별로 없긴하다.

RxJava와 Coroutine은 AsyncTask보다 학습곡선이 크긴 하지만, AsyncTask가 Deprecated된 지금부터는 비동기처리를 위해 위와 같은 라이브러리를 공부하는것이 선택이 아닌 필수가 되었다.

 

 

 

 

 

카테고리: 미분류

0개의 댓글

답글 남기기

Avatar placeholder

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.