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

AsyncTask를 공통을 사용하는게 맞는걸까요?

0 추천

액티비티마다  AsyncTask를 상속받은 inner class로 생성하여

new MyAsyncTask(...).excute();


private class MyAsyncTask extends AsyncTask<...> {
     @TO DO.
} 

이런 방식으로 사용을 해왔는데 onPreExcute, doInBackground 부분의 코드에 액티비티마다 비슷비슷한 코드가 계속 들어가 길어지는 관계로 새로운 프로젝트를 하면서 통신부분을 모두 공통으로 빼서 작업하려고 합니다.

 

공통 asynctask 부분

public class CustomAsyncTask extends AsyncTask<...>
{
    private CumtomListener listener;
    ...
}

사용부분
 

CustomAsyncTask async = new CustomAsyncTask(...);

async.setCustomListener(...) {
   @TO DO.
}
async.excute(..);

 

기존 방식이나 새로운 방식이나, 크게 문제될 만한것이 있을까요?

혹은, 어떤 방법이 더 괜찮을 방법인지 조언을 구하고 싶습니다.

모나미153 (17,540 포인트) 님이 2015년 10월 28일 질문

1개의 답변

+1 추천
 
채택된 답변
개인적으로 후자의 형태로 사용하는 것이 좋다고 생각합니다. 전자처럼 하게되면 정확하게 메모리 릭이 아니지만 메모리 해제를 늦추게 되서 결과적으로는 메모리 릭 상황을 유발할 수 있습니다. 그래서 inner 클래스로 AsyncTask를 사용하시는 것은 위험합니다. inner로 사용하신다면 static inner로 변경하세요..

Activity나 Fragment에서 CustomListener를 구현하시고, 개별 AsyncTask에서 CustomListener에 데이터를 전달하는 형태가 더 좋습니다.. ^^
mcsong (44,040 포인트) 님이 2015년 10월 28일 답변
모나미153님이 2015년 10월 28일 채택됨
답변 감사드립니다 :)
...