스레드를 안전하게 중지하려면 어떻게해야합니까?어떻게 안전하게 안드로이드에서 스레드를 중지 하시겠습니까?
downloadThread = new Thread(new Runnable() {
@Override
public void run() {
});
downloadThread.start();
}
스레드를 안전하게 중지하려면 어떻게해야합니까?어떻게 안전하게 안드로이드에서 스레드를 중지 하시겠습니까?
downloadThread = new Thread(new Runnable() {
@Override
public void run() {
});
downloadThread.start();
}
스레드를 인터럽트합니다. 스레드의 run()
메서드에서 다른 논리 블록의 끝에 isInterrupted()
값을 확인하십시오.
예를 들어, run()
방법은 네트워크 연결을 만들고, 이미지를 다운로드하고 이미지를 파일로 저장하는 세 가지 논리 단계로 나눌 수 있습니다. 이 단계가 끝나면 isCancelled()
을 확인하고 그 시점에서 모든 상태를 삭제하는 작업을 중지합니다.
class NetworkFetcherTask extends AsyncTask<String, Void, Void>{
public void doInBackground(String... params){
String url = params[0];
//Open connection if not cancelled
if(isCancelled()){
conn.close();
return;
}
NetworkConnection conn = new NetworkConnection();
//Download the image if not cancelled
if(isCancelled()){
conn.close();
result.discard();
return;
}
NetworkResult result = conn.fetchUrl(url);
conn.close();
//Save the image to a file if not cancelled
if(isCancelled()){
result.discard();
return;
}
File file = new File();
file.dump(result);
}
}
Wohoo! 오래 된 질문! 실현하지 못했습니다 –
몇 가지 예를 들어 줄 수 있습니까? –
자, 자. isInterrupted()에서 isCancelled() 로의 변경 사항을 기록하십시오. isInterrupted()는 스레드의 메서드이며 AsyncTask는 아닙니다. 내 사과. –
... – dalle
이이 같은 잦은 좋은 답변 자주 질문은 다음과 같습니다 ([어떻게 자바에서 빠르고 깨끗한 방법으로 스레드를 중단]에 http : // 유래. co.kr/questions/94011/how-to-abort-a-thread-in-a-fast-and-clean-in-java) –