我正在尝试使用AsyncTask下载600 MB文件。如果我在真实世界的设备上执行我的代码,它可以正常工作,但只有当我“不停地关注它”时,不要让屏幕保持关闭一段时间,但是,如果我不这样做而且只是让我自己离开设备,几分钟后我去检查它时,进度对话框消失了,它下载的文件只是它应该的大小的一小部分。我的猜测是,它与手机在屏幕关闭一段时间后让WiFi进入睡眠状态有关。
我该如何解决这个问题?
以下是相关代码:
class DownloadFileAsync extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
showDialog(DIALOG_DOWNLOAD_PROGRESS);
}
@Override
protected String doInBackground(String... aurl) {
int count;
try {
URL url = new URL(aurl[0]);
URLConnection conexion = url.openConnection();
conexion.connect();
int lenghtOfFile = conexion.getContentLength();
InputStream input = new BufferedInputStream(url.openStream());
OutputStream output = new FileOutputStream("/sdcard/file.zip");
byte data[] = new byte[1024];
long total = 0;
while ((count = input.read(data)) != -1) {
total += count;
publishProgress(""+(int)((total*100)/lenghtOfFile));
output.write(data, 0, count);
}
output.flush();
output.close();
input.close();
} catch (Exception e) {}
return null;
}
protected void onProgressUpdate(String... progress) {
mProgressDialog.setProgress(Integer.parseInt(progress[0]));
}
@Override
protected void onPostExecute(String unused) {
dismissDialog(DIALOG_DOWNLOAD_PROGRESS);
}
}
}
答案 0 :(得分:2)
答案 1 :(得分:1)
如果您的目标SDK足够高,也可以使用Download Manager。
答案 2 :(得分:0)
您很可能正在使用Wi-Fi连接,只要屏幕关闭,就可以断开连接。您可以在以下位置查看:
Advanced
但您应该考虑将Download Manager用于较新的设备(使用Android 2.3 +)。