2012-09-05 2 views
4

중간에 AsyncTask를 실행하는 동안 활동을 종료하면 그 활동을 다시 시작하려고 할 때 새로운 AsynTask가 시작되기 전에 이전 AsyncTask가 완료 될 때까지 기다려야합니다. 나는 thread.sleep와 systemclock.sleep을 모두 시도해 보았고 같은 결과를 얻었다. 내가 닫고 열어 놓은 쓰레드가 같다고 생각하기 때문에 어떤 의미가 있습니다. 사용자가 액티비티를 종료하면 AsyncTask를 취소하는 방법이 있습니까? 사용자가 두 번째로 동일한 활동을 입력하기 때문에 이전 완료 때까지 기다릴 필요가 없습니다. onPause()에서 asyntask.cancel (true)를 시도했지만 작동하지 않습니다. 동일한 문제가 발생했습니다.thread.sleep와 systemclock.sleep의 차이점은 무엇입니까? AsyncTask에서 어느 것을 사용해야합니까?

+2

여기를보세요 : http://stackoverflow.com/questions/4748964/android-cancel-asynctask-forcefully – newbyca

+0

감사합니다! 하지만 내 질문의 첫 부분은 어때? thread.sleep 또는 systemclokc.sleep? –

+0

나는 당신의 질문 중 특정 부분에 대한 실제 답변을 제출했습니다. 아래를보십시오. – newbyca

답변

7

내가 알기 론 Thread.sleep()과 SystemClock.sleep()의 유일한 차이점은 Thread.sleep()이 인터럽트 될 수 있다는 것입니다.

SystemClock.sleep(10*1000); 

10 초 동안 호출 스레드을 자고 그 방금 기다릴 필요가 있음이다 : 그것은 같은입니다. 반면 :

Thread.sleep(10*1000); 

또한 호출 스레드를 10 초 동안 대기시킵니다.

sleepingThread.interrupt(); 

효과적으로 십초 잠에서 sleepingThread을 깨어 : 다른 스레드에서 잠자는 스레드에 대한 참조가있는 경우, 당신은 지금과 같은 옵션이 있습니다.

AsyncTask를 사용하는 것이 더 나은 질문의 맥락에서 나는 이것이 여전히 전적으로 귀하의 요구 사항에 달려 있다고 생각합니다. 물론 정확한 코드는 모르지만 doInBackground가 잠자고있는 중일 때 임의의 시간에 작업을 취소 할 수 있기를 원하면 Thread.sleep()이 더 적합 할 수 있습니다.

관련 문제