내 응용 프로그램 (거의 1GB)에 큰 파일을 다운로드해야하고 그 일을하는 가장 좋은 방법은 무엇인지, 일부 라이브러리는 나를 도와 주는지 궁금합니다. 우선 Android Asynchronous Http 라이브러리를 살펴 보았지만 진행 상황을 게시하거나 다운로드를 일시 중지하는 방법을 보여주는 예제는 찾지 못했습니다. 그렇다면이 lib를 사용해야하는지 또는 표준 http 커먼을 사용해야하는지 모릅니다. 다른 문제는, 내 파일을 다운로드하는 서비스를 사용해야합니까 ??안드로이드에서 큰 파일을 다운로드하고 일시 중지하는 가장 좋은 방법은 무엇입니까?
1
A
답변
0
장기 실행 HTTP 다운로드를 처리 할 수있는 시스템 서비스 인 DownLoad Manager을 사용해야합니다.
0
당신은 이력서 다운로드 AsyncTask를이 코드를 사용할 수 있습니다 : 그것은 당신의 모든 테스트 케이스 &을 처리하기 때문에
가@SuppressLint("Wakelock")
@Override
protected String doInBackground(String... sUrl) {
// take CPU lock to prevent CPU from going off if the user
// presses the power button during download
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,
getClass().getName());
wl.acquire();
try {
InputStream input = null;
OutputStream output = null;
HttpURLConnection connection = null;
try {
URL url = new URL(sUrl[0]);
connection = (HttpURLConnection) url.openConnection();
File SDCardRoot = Environment.getExternalStorageDirectory();
File file = new File(SDCardRoot,FOLDER_PATH1+FOLDER_PATH2+ "/"+fileName);
int downloaded=0;
if(file.exists()){
downloaded=(int) file.length();
connection.setRequestProperty("Range", "bytes=" + (int) file.length() + "-");
}
else{
file.createNewFile();
}
connection.setDoInput(true);
connection.setDoOutput(true);
connection.connect();
// expect HTTP 200 OK, so we don't mistakenly save error report
// instead of the file
// this will be useful to display download percentage
// might be -1: server did not report the length
int fileLength = connection.getContentLength()+(int)file.length();
// download the file
input = connection.getInputStream();
if(downloaded>0){
output = new FileOutputStream(file,true);
}
else{
output = new FileOutputStream(file);
}
byte data[] = new byte[1024];
long total = downloaded;
int count;
mProgressDialog.setMax(fileLength/1024);
while ((count = input.read(data)) != -1) {
// allow canceling with back button
if (isCancelled())
return null;
total += count;
// publishing the progress....
if (fileLength > 0) // only if total length is known
publishProgress((int)total/1024);
output.write(data, 0, count);
}
output.flush();
if (output != null)
output.close();
if (input != null)
input.close();
if (connection != null)
connection.disconnect();
wl.release();
return null;
} catch (Exception e) {
return e.toString();
}
}
catch (Exception e) {
return e.toString();
}
}
0
당신은 라이브러리를 사용한다이 상태를 다운로드 유지하는 데 도움이됩니다.
라이브러리의 일부 :
관련 문제
- 1. 큰 파일을 Android에서 다운로드하는 가장 좋은 방법은 무엇입니까?
- 2. webBrowser가 페이지를로드하는 동안 루프를 일시 중지하는 가장 좋은 방법은 무엇입니까?
- 3. 오랫동안 exe를 일시 중지하는 가장 좋은 방법은 무엇입니까
- 4. 스레드를 일시 중지하는 방법은 무엇입니까?
- 5. 큰 바이너리 파일을 다운로드하고 변환하는 가장 빠른 설계는 무엇입니까?
- 6. 안드로이드에서 xml을 읽는 가장 좋은 방법은 무엇입니까?
- 7. 안드로이드에서 오디오 파일을 결합하는 가장 좋은 방법
- 8. 안드로이드에서 카운트 다운 타이머를 일시 중지하는 방법은 무엇입니까?
- 9. 시뮬레이션을 일시 중지하는 방법은 무엇입니까?
- 10. NSTimer를 일시 중지하는 방법은 무엇입니까?
- 11. DispatchTimer를 일시 중지하는 방법은 무엇입니까?
- 12. 프로그램을 일시 중지하는 방법은 무엇입니까?
- 13. newScheduledThreadPool을 일시 중지하는 방법은 무엇입니까?
- 14. 안드로이드에서 정보를 표시하는 가장 좋은 방법은 무엇입니까
- 15. 안드로이드에서 이미지를 숨기는 가장 좋은 방법은 무엇입니까?
- 16. 안드로이드에서 sqlite에 액세스하는 가장 좋은 방법은 무엇입니까?
- 17. 안드로이드에서 탭을 구현하는 가장 좋은 방법은 무엇입니까?
- 18. 안드로이드에서 애니메이션을 만드는 가장 좋은 방법은 무엇입니까?
- 19. .NET에서 dll을 주문형으로 다운로드하고 설치하는 가장 좋은 방법은 무엇입니까?
- 20. 안드로이드에서 mp3 파일을 다운로드하고 재생하십시오.
- 21. 큰 json 파일을 읽는 가장 좋은 방법은 무엇입니까?
- 22. 큰 스트리밍 데이터 파일을 클라우드로 전송하는 가장 좋은 방법은 무엇입니까
- 23. 웹 사이트에서 큰 텍스트 파일을 보는 가장 좋은 방법은 무엇입니까?
- 24. 이미지 읽기를 중단/일시 중지하는 방법은 무엇입니까?
- 25. 큰 본문을 축소하는 가장 좋은 방법은 무엇입니까?
- 26. 큰 개체를 백업하는 가장 좋은 방법은 무엇입니까?
- 27. Elastic Beanstalk의 청구를 일시 중지하는 방법은 무엇입니까?
- 28. P-C 패턴으로 소비자를 일시 중지하는 가장 쉬운 방법은 무엇입니까?
- 29. dimens.xml 파일을 구성하는 가장 좋은 방법은 무엇입니까?
- 30. 부스트 유닛 테스트를 일시 중지하는 방법은 무엇입니까?
귀하의 질문을 반복한다. 이 질문을 참조하십시오. 도움이 될 것 같습니다. [Android로 파일을 다운로드하고 ProgressDialog에서 진행 상황을 표시합니다.] (http://stackoverflow.com/questions/3028306/download-a-file-with-android-and- progress-in-the-progressdialog = 1 & lq = 1을 보여주는) – Sanju