안녕하세요?
네트워크때문에 요번에 AsyncTask 를 배워서 요긴하게 써먹고있는데요..
AsyncTask 의 쓰레드가 멈췄을때의 이벤트를 받는방법을 몰라서..
액티비티에 함수를 만들어놓고 그걸 onPostExecute에서 호출되게끔 처리하고있습니다.
임시방편이긴한데..
AsyncTask 에 계속 귀속되는 느낌이 들어서 코드도 점점더 지저분해지고.. 별로더라구요..
앱이 실행되면 네트워크 상태를 체크한후부터 여부에 따라서 나머지를 처리하든지 아니면 앱종료를 시키는 과정을 만들고싶은데요.
AsyncTask 를 실행시키고나서 다음코드가 자동으로 이행되니깐 서로 따로 놀게돼서 문제가 생겨버리더라구요.
리스너처럼 AsyncTask 를 종료했을때 감지될수있는 함수나..뭐그런방법들이 존재하는지요?
답변주셔서감사합니다.. 아직 핸들러까지 배우질못해서요.
AsyncTask 에 대해서 찾아보니 public final AsyncTask.Status getStatus () 라는게 있더라구요.
이걸로 상수값을 비교해서 루프를 돌려보니
running 은 감지되는데 finished는 감지가안되더라구요..아 산넘어 산이네..
Android 는 Java 언어로 프로그램을 하기땜누에 Thread를 지원합니다.
AsyncTask 플렛폼에서 지원하는것인데
나중에 이것저것 해보실때 결국 Thread 사용이 더 편해질껍니다
미리미리 Thread에 익숙해지는것도 좋은 방법일거 같은데요~!!
http://www.vogella.com/articles/AndroidPerformance/article.html
AsyncTask도 결국 thread를 응용해서 클래스와시켜서 제공하는건데, 응용하는건 쓰레드 핸들러 쓰는게 훨씬 편리할거같네요.
왜 억지로 어려운 구문에 자신의 코딩을 집어넣어서 힘들게 작업하는지모르겠네요^^;
윗분말대로 onPost에 핸들러를 써서 알려줘도 되구요,
단순히 쓰레드를 써서 쓰레드끝날 때 핸들러를 줘서 알려줘도 되구요.
제가보기엔 Asynctask를 처음부터 배워서 사용하는것보다 쓰레드 핸들러를 먼저배우는게 우선일듯싶어요.
어짜피 AsycnTask도 쓰레드 핸들러를 이용해서 클래스화 해서 메서드를 제공하는것에 불과할뿐이거든요..




Activiy안에 handler를 하나 정의하고,
onPostExecute에서, 작업이 종료되면, sendEmptyMessage 를 call하면, Handler에서 받아서 처리하면 될 듯 합니다.