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

Fragment와 AsyncTask 질문 입니다

0 추천
Fragment에서 AsyncTask를 구현 하였는데

문제는 onCreate에서 AsyncTask를 이용하여 서버에서 데이터를 받아 옵니다.

그 후에 View에 뿌려지게 되는데 onCreateView에 AsyncsTask를 execute하면

Fragment가 onDestory상태가 아닐때 onCreateView가 계속 불리면서 불필ㅛ한 서버에 접속이 생깁니다.

다른 문제는 onCreate에 AsyncTask를 execute할 경우 AsyncTask의 onPostexecute부분에

view를 설정 해 주는 부분이 있는데 이것이 onCreateView에서 설정이 다 끝나지 않으면 데이터가 표시되지 않는

상황이 발생하여 질문드립니다.

onCreateView에서 AsyncsTask가 다 돌아갈 때 까지 기다리게 하는 방법이 있나요??
노예의집 (23,370 포인트) 님이 2014년 4월 25일 질문
저라면 task에 콜백리스너를 걸어서 처리할것같은데요.
oncreate는 비워두고 콜백에서 flag를 받아서 재실행시켜준다거나 뭐그런식?
onCreateView가 여러번 불란다는 말씀이신가요? 흠... 못보던 현상인데... onCreate()에서 부르시고 특정 뷰의 post()를 이용해보시는건 어떤가요? onPostExecute()에서 특정 뷰.post()로 작업하시면 이게 핸들러로 날아가서 큐에 쌓입니다.
근데 onCreateView가 왜 계속 호출되는거죠?
ActionBar의 navigation drawer로 fragment를 바꿔주는데요 fragment가 바뀌고 다시 돌아올 때 마다 onCreateView가 다시 불리네요

1개의 답변

+1 추천
 
채택된 답변
뭔가 생각을 잘못하고 계십니다.

AsyncTask 를 쓰는 목적은 특정 작업을 비동기적으로 실행시키는 것입니다.

AsyncTask가 다 돌아갈 때까지 기다리게 할거면 AsyncTask를 쓸 이유가 없습니다.
익명사용자 님이 2014년 4월 25일 답변
노예의집님이 2014년 6월 2일 채택됨
서버에서 데이터를 받아오려면 무조건스레드를 돌려야하는데 비동기로 할수밖에 없지 않나요?
제 말씀은, AsyncTask가 다 돌아갈 때까지 기다리게 하면 안된다는 것입니다.
...