일단 이전의 이 질문 해결에 도움주신 "중견수"님 진심으로 감사드립니다.
________________________________________________________이______전_____글_____________________________________
java로 개발된 소스코드를 가져다 쓰고 있습니다. 소스를 보여드리면서 질문 드리고 싶지만 사내 비밀이라 ㅠㅠ
어쨌거나 소스코드는 결과적으로 receive하는 부분이 application으로 짜여져 있습니다.
제가 가져다 쓰는 부분이 이 부분인데
지금 쓰는 코드는
ReceiveFile receive= new ReceiveFile("xxx.xxx.xxx.xxx",9000,"list_temp.txt","/sdcard/list_temp.txt");
receive.run();
이런식입니다. 다들 아시겠지만 아이스크림 샌드위치에서 이런식으로 실행하면
RuntimeException android.os.NetworkonMainThreadException 에러가 납니다.
진저브래드 에서는 잘(???) 돌아가는 코드입니다만...
제가 안드로이드에 대한 이해도 낮거니와, 제가 생각하는 문제는 제가 소스코드 자체를 손댈 실력은 안된다는겁니다.
그래서 질문은 ㅠ
소스코드의 application을 가져다 쓰는 부분을 백그라운드에서 실행해서 에러를 피할 수 있는가 하는겁니다.
다소 두서없고 복잡하게 질문한것 같아 죄송스럽습니다.
개떡같은 질문이지만 찰떡같은 답변 기대하면서 염치 없는 글을 맺습니다 (__);;;
___________________________________________________________________________________________________________________
AsysncTask를 사용해서
소스코드를 수정하고, 이걸 적용해서 파일을 받는데 성공했습니다 ^^ㅋ
AsysncTask로 수정된 코드를 아래와 같이 불러다 쓰고 있습니다.
그런데 이렇게 받고보니 이렇게 실행된 task(?)가 계속해서 자원을 점유하고 있으면서 계속해서 뭔가 실행하고 있다는 사실을 알게 되었습니다. 이부분을 전송후에 종료하도록 하려면 어떤 명령을 사용하면 될까요?
고수님들 조언 부탁드립니다.
도움이 되셧다니 다행입니다. ㅎㅎ
AsyncTask는 onPreExecute -> doInBackground -> onPostExecute 순으로 실행되는데요
일단 onPostExecute 메서드가 호출되는지 확인해 보셔야겟네요
호출되었다면 정상적으로 태스크가 종료될겁니다.
그렇지 않다면 doInBackground 에서 파일 전송소스가 문제가 있다고 봐야겠네요. 무슨 문제인지는 디버깅 하면서 찾으셔야겠죠.
삽질하면서 배우는겁니다 화이팅하세요 ㅋㅋㅋ
http://developer.android.com/reference/android/os/AsyncTask.html#cancel(boolean)
receive.cancel로 해보고
onCancelled()나 isCancelled로 로그찍어보심되지않을까요




허접한 답변이지만, 혹시 onPostExecute(), onCancelled() 을 사용해보심은?