안녕하세요. 질문이 좀 많습니다.. 비슷하긴 한데..
1. 보통 어싱테스크가 다운로드같은 작업은 doInBackground()에서 하고 뒷처리 업데이트는 onPostExecute()에서 하잖아요
근데 안드로이드 개발시에 어싱테스크를 액티비티 내부에 private inner class로 넣어서 코딩하는게 좋지 않은 습관인가요?
2. 보통 onPostExecute()에서 액티비티의 UI를 업데이트 할때에 inner class인 어싱테스크가 outer class인 액티비티의 변수들에 접근하기가 쉬우니까.. 거의 코딩할때 inner class로 쓰는 경향이 생기는데.. 이게 좋지 않은가요?
3. 그리고 어싱테스크가 문제가 configuration change때 old 액티비티를 참조하기 때문에 메모리릭이 생기는걸로 아는데 이걸 방지하기 위해 weakReference를 쓰잖아요. 근데 어싱태스크가 inner class인 경우도 "항상" weakReference를 사용해서 액티비티를 참조해야 하나요? 어느 때에 weakReference 를 사용 하고 안하고 하나요?
4. 어싱태스크가 inner class일 경우는 static class로 할 필요는 따로 없나요?
5.그리고 보통 어싱태스크 클래스를 액티비티와 따로 둬서 사용할 경우에 weakReference는 액티비티를 참조하는게 나은가요 아님 Context를 참조하는게 나은가요? 아님 아무 상관도 없는건가요?
6. 마지막으로.. 어느 경우에 어싱태스크를 액티비티와 따로 구분해서(=inner class로 안 사용) 하나요? 뭐 어싱태스크 덩치가 너무 길어지는 경우 말고 또 있나요? 그리고 어싱태스크가 onPostExecute()에서 액티비티의 UI컴포넌트에 업데이트할게 많다면...
예를들어 FooActivity에서 BarAsyncTask를 따로 사용할 경우
BarAsyncTask내에서 WeakReference<Activity> ref를 관리하고 ref.get()을 사용해서 (FooActivity)ref.get() 으로 캐스팅한다음에 FooActivity 내부의 public 메서드를 불러서 이 메서드로 결과값을 전달하고 이 안에서 FooActivity의 UI를 업데이트 하는게 일반적인건가요?
질문이 좀 중구난방인데.. 이게 좀 이해가 될듯하다가도 안돼서..ㅠ 개념정리해주시면 감사하겠습니다..