.disconnect() 메서드를 사용하여 HTTPURLConnection을 연결 해제하는 방법을 알고 있습니다. 하지만 URLConnection 객체는 어떻습니까? Myy 앱은 URLConnection.getInputStream을 통해 서버에서 직접 링크가있는 파일을 다운로드합니다. 다운로드 진행률에는 중지 단추가 있습니다. 사용자가 멈추었을 때 다운로드를 중단하고 싶습니다. 대답 해줘서 고마워. 당신이 URLConnection.getInputStream()를 사용하는 경우안드로이드 URLConnection 연결을 끊는 방법
0
A
답변
1
, 다음과 같이 보일 수 있습니다 귀하의 다운로드 코드는 다음과 같습니다 : 그래서
InputStream fileInputStream; // initialized
// ...
byte[] buffer = new byte[1024 * 32];
int len;
int totalLen = 0;
while ((len = fileInputStream.read(buffer)) != -1) {
fstream.write(buffer, 0, len);
totalLen += len;
}
,이 루프를 중단해야이 다운로드 한 번에 몇 가지 조건이 하나의 방법에 해당된다 중지 다운로드가 작업자 스레드에있는 동안 대부분은 UI 스레드에서 설정하기 때문에, AtomicBoolean를 사용하는 :
는// in your download class
AtomicBoolean abort = new AtomicBoolean(false);
// Updated loop
while ((len = fileInputStream.read(buffer)) != -1) {
if (abort.get()) {
// do any necessary cleanup like closing streams
break;
}
fstream.write(buffer, 0, len);
totalLen += len;
}
다음 버튼을 클릭 핸들러에 추가 : abort.set(true);
+0
boolean에 대해 비교 및 스왑 연산을 수행해야하는 경우 (필요 없음) '휘발성 부울'만으로 충분합니다. – desseim
+0
감사합니다. 전에 atomicboolean을 사용하지 않았습니다. 매우 유용합니다. 이전에 부울과 동일한 작업을 시도했으나 작동하지 않았습니다. – themaster33
다운로드를 중지하려면 스트림을 읽는 방법에 따라 다릅니다. 코드의 관련 부분을 붙여 넣어야합니다. – desseim