我正在使用此代码段代码从服务器下载mp4文件。通常文件正确下载, 但有时我的下载过程会自动停止下载。进度条停止递增。是否有任何内核进程停止下载。
//+++++++++= FUnction Call ++++++++++++++++
DOWNLOAD_FILE_NAME = "demo.mp4";
grabURL("mp4 file server url");
//+++++++++++++++++++++++++++++++++++++++++
public void grabURL(String url) {
new GrabURL().execute(url);
}
private class GrabURL extends AsyncTask<String, Void, Void> {
private final HttpClient Client = new DefaultHttpClient();
private String Content;
private String Error = null;
private ProgressDialog Dialog = new ProgressDialog(SlideShow.this);
protected void onPreExecute() {
showDialog(DIALOG_PROGRESS);
mProgressDialog.setProgress(0);
}
protected Void doInBackground(String... url) {
int count;
try {
URL url2 = new URL(url[0]);
URLConnection conexion = url2.openConnection();
conexion.setUseCaches(true);
conexion.connect();
// this will be useful so that you can show a tipical 0-100% progress bar
int lenghtOfFile = conexion.getContentLength();
mProgressDialog.setMax(lenghtOfFile);
// downlod the file
InputStream input = new BufferedInputStream(url2.openStream());
OutputStream output = new FileOutputStream(DOWNLOAD_FILE_NAME);
byte data[] = new byte[1024];
while ((count = input.read(data)) != -1) {
mProgressDialog.incrementProgressBy(data.length);
output.write(data, 0, count);
}
output.close();
input.close();
} catch (Exception e) {}
return null;
}
答案 0 :(得分:2)
在移动设备上,互联网连接必须被视为非常不可靠。
您的代码显示了下载方法,但没有连接管理。 如果您的互联网连接由于某种原因停止,您的代码将无法重新启动它。
您可以使用ConnectivityManager中的广播接收器:http://developer.android.com/reference/android/net/ConnectivityManager.html 连接断开时通知,并在连接再次启动时从那里重新启动下载。