안드로이드 개발자가 기술 면접을 보는 경우에 나올 수 있는 질문들을 학습 및 정리 하는 글입니다
이해한 정보들을 간략하게 정리 해놓은 글이기 때문에 더 깊게 알고 싶으신 분들은 따로 검색을 하셔서 찾아 보시는걸 추천 드립니다!
Q. AsyncTask가 무엇이며 Deprecated된 이유는?
A.
먼저 AsyncTask 클래스는 이름에서부터 알 수 있듯이 비동기 작업을 위해 사용 된다. UI 스레드에서 수행한다면 UI 스레드가 차단될 수 있는 작업을 비동기적으로 수행 할 수 있다.
AsyncTask가 Deprecated된 이유
메모리 누수
Activity의 종료 시점과 AsyncTask의 끝나는 시점이 다르다 예를 들어 화면을 회전할때 계속 AsyncTask가 쌓여서 실행 되는 경우가 있다 화면이 회전 되면 액티비티는 종료되고 액티비티가 새로 생성 되는데 이때 기존 액티비티에 AsyncTask가 실행 중인 경우 액티비티가 메모리에서 제거 되지 않는다
순차 실행으로 인한 속도 저하
예외처리 메소드가 없음
프래그먼트에서 AsyncTask를 실행하고 Back key로 Activity를 종료하면 Flagment와 Activity가 분리 되면서 getContext와 getActivity가 null을 리턴하고 onPostExecute에서 NPE(NullPointException)이 발생한다