안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요
task 종료에 관한 질문이 있어서요..
여기저기서 찾아보니 cancel 메서드호출하는게 좋다고 하는 글이 많더라구요.
호출 해도 정상종료 된건지 확인할 수 있는 메서드가 없어서 확신이 안되서요.........
isCancelled가 종료여부인줄 알고있었는데
태스크 실행중에 강제로 멈춰진건지 확인하는 메서드라고 하더라구요;;;
눈에 보이는 영역이 아니라서 더 신경 쓰이네요 ㅠ.ㅠ
태스크 종료가 필요할 경우
doInBackground를 빠져나옴 -> onPostExecute -> cencel 호출
이런 과정을 밟게 해 두었습니다.
여기까지만 해두면 깔끔하게 종료 된 것이 맞는지 궁금합니다.
2012.04.06 17:07:16
cancel(boolean) 메서드는 필요시 doInBackground에서 안전하게 빠져나와서
onCanceled 메서드를 이용해 적절한 처리를 하기 위해 명시적으로 호출할 뿐이지
스레드를 종료시키기 위한 메서드는 아닙니다.
따라서 굳이 onPostExecute에서 호출할 필요도, 이유도 없습니다.
애초에 onPostExecute라는 메서드는 스레드가 종료된 후에 호출되니까요...
doInBackground가 정상적으로 작업을 마쳤다면 cancel은 아무 필요 없으며
onPostExecute가 정상적으로 리턴했다면 따로 처리할건 없습니다.




task.getStatus() != AsyncTask.Status.FINISHED 로 확인하세요.