예를 들면 서버에 http.execute 이용하여 xml을 요청합니다.
요청할때 thread를 돌려 ProgressDialog 돌게 만들었죠.
그런데, 사용자가 백키를 이용하여 ProgressDialog를 취소를 했는데
thread는 계속 돌고 있는 상태입니다.
이럴때 thread interrupt()를 사용할려니 run() 메서드안에 for문이나 while문을 쓸 경우
break로 빠져나가는게 있는데..
인터넷 다운로드는 반복문을 사용안하자나요?
이럴때 어떻게 해야 메서드와 인터넷다운로드를 중지 할 수 있나요 ㅠㅠ
지금 문의하신 내용은 어느함수 하나만을 이용해서 처리할수잇는방법은 없습니다.
이문제는 쓰레드 자체 사용방법문제인데요. 삽질점 하다가보면 알게되는문젠데 소켓프로그래밍이나 파일입출력을 해보셧다면 아실텐데요
쓰레드에서 파일입출력이나 소켓 입출력할때 recv상태에서는 스레드를 종료시킬수 없습니다. 종료 시킬수잇는 방법은 recv를 close하고 null처리하게되면 recv에서 Exception이 발생해서 블러킹이 플리고 그다음 정상 종료루틴을 진행할수 잇게됩니다.
위방법도 똑같은문젠데 지금 하시려는게 execute상태<- 블러킹상태겟조 이상태를 어떻게 해제하는냐가 문제인거같은데요
보통 저는 블러킹이 걸리는구문은 무조건 비동기로 빼기떄문에 쓰레드를 하나 구현하시구요 쓰레드로 돌아가고 사용자가 back시 http를 클로즈하시거나해서 Exception을 발생시켜서 블러킹을 해제하셔야합니다. 그다음은 back눌럿을때 flag를 조정하여 쓰레드를 종료시킬수 잇겟조. 쓰레드를 강제종료 시키는것은 거의 힘들다고보시면됩니다.