안드로이드 개발 질문/답변
(글 수 45,052)
인터넷에서 큰 이미지를 다운받은 소스인데요
다운받을땐 쓰레드로 돌리고 있습니다.
그런데 엑티비티 종료해도 계속 돌아가더라구요.
다운받는 형식인지라 while문 돌려서 interrupt 내는건 안되겠떠라구요..
엑티비티 종료시 강제로 쓰레드 종료방법 없을까요?
2011.02.18 10:52:35
저도 궁금했던 부분인데, 저도 정확히는 모르지만, 제가 현재 하고 있는 방식은
BackRunnable br = new ..
Thread t = new Thread(br)
로 해서 스레드 작업 처리하고,
엑티비티 종료 혹은 핸들러에서 메시지 받아서
br.finalize(); 로 종료 시킵니다. 물론 스레드 while문에 flag를 쓰긴 하지만...
BackRunnable finalize 메소드를 쓰는게 옳은지는 모르겠네용.
좋은 해법있으면 공유해요~~
2011.02.18 11:24:58
스레드를 종료시킬 때는 interrupt 를 쓰는게 정석입니다.
flag를 사용하는 경우 해당 flag를 읽고 쓰는 부분을 동기화해야 정상 동작합니다.
그리고 finalize() 는 프로그래머가 호출하라고 만든 함수가 아닌 것으로 압니다.
java vm 이 적당한 때에 호출하기 위해 만든 것으로, 이 함수에 의존하는 것은 좋지 않습니다.
flag를 사용하는 경우 해당 flag를 읽고 쓰는 부분을 동기화해야 정상 동작합니다.
그리고 finalize() 는 프로그래머가 호출하라고 만든 함수가 아닌 것으로 압니다.
java vm 이 적당한 때에 호출하기 위해 만든 것으로, 이 함수에 의존하는 것은 좋지 않습니다.




제 생각에 Main과는 상관없이 Thread에서 작업이 끝나면 항상 알아서 종료되도록 코딩하는 것이 가장 좋은 방법인거 같습니다.
어쨋든 위 경우에는, Main의 종료를 판단하는 flag를 하나 만들어서 Thread에서 계속 체크하는 방식으로 하면 되지 않을까요?