class DownloadAsyncTask extends AsyncTask<String[], Integer, String> {
private String fileName;
private long length;
DownloadAsyncTask(String fileName) {
this.fileName = fileName;
}
@Override
protected void onPreExecute() {
mProgressLayout.setVisibility(View.VISIBLE);
mBtnUpdate.setVisibility(View.GONE);
mBtnBack.setVisibility(View.GONE);
mProgressBar.setIndeterminate(false);
mBtnCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DownloadAsyncTask.this.cancel(true);
mProgressLayout.setVisibility(View.GONE);
mBtnUpdate.setVisibility(View.VISIBLE);
mBtnBack.setVisibility(View.VISIBLE);
mBtnUpdate.setText(R.string.upgrade_now);
}
});
super.onPreExecute();
}
@Override
protected String doInBackground(String[]... params) {
InputStream is = null;
String[] fileInfos = params[0];
try {
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(fileInfos[0]);
HttpResponse response;
response = client.execute(get);
HttpEntity entity = response.getEntity();
length = entity.getContentLength();
mProgressBar.setMax((int) (length / 1024));
is = entity.getContent();
FileOutputStream fileOutputStream = null;
if (is != null) {
File file = new File(fileInfos[1], fileInfos[2]);
fileOutputStream = new FileOutputStream(file);
byte[] buf = new byte[1024];
int ch = -1;
int count = 0;
while ((ch = is.read(buf)) != -1) {
if (isCancelled()) {
break;
}
fileOutputStream.write(buf, 0, ch);
count += ch;
publishProgress((int) (count / 1024));
}
}
fileOutputStream.flush();
if (fileOutputStream != null) {
fileOutputStream.close();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return fileInfos[2];
}
@Override
protected void onProgressUpdate(Integer... values) {
String size = FileManager.formartFileSize(length);
String downloadSize = FileManager.formartFileSize(values[0] * 1024);
mProgressBar.setProgress(values[0]);
mProgressPersent.setText(values[0] * 1024 * 100 / length + "%");
mProgressSize.setText(downloadSize + "/" + size);
super.onProgressUpdate(values);
}
@Override
protected void onPostExecute(String result) {
Message msg = Message.obtain(mHandler,
MessageWhat.ACTION_DOWNLOAD_COMPLETED, this.fileName);
mHandler.sendMessage(msg);
super.onPostExecute(result);
}
}
分享到:
相关推荐
网站模板下载工具 方便快捷 网站模板下载工具 方便快捷 网站模板下载工具 方便快捷 网站模板下载工具 方便快捷 网站模板下载工具 方便快捷 网站模板下载工具 方便快捷 网站模板下载工具 方便快捷 网站模板下载工具 ...
超强整站下载工具 超强整站下载工具 网站下载
STM32串口下载工具合集STM32串口下载工具合集STM32串口下载工具合集STM32串口下载工具合集STM32串口下载工具合集STM32串口下载工具合集STM32串口下载工具合集
整站下载工具,整站下载工具,整站下载工具,
钉钉视频下载工具
微信视频号视频下载工具
小V视频号下载工具(免费)v0.5
百度瓦片下载工具,适用于离线地图的开发者,使用方法查看我的博客 https://blog.csdn.net/LZY_1993/article/details/118000213
安卓sdk下载工具 方便管理sdk 选择sdk就可以安装
展锐下载工具分享 ResearchDownload_R24.20.1001
一个下载工具一个下载工具一个下载工具一个下载工具一个下载工具一个下载工具一个下载工具一个下载工具
如何快速下载国外网盘资源,国外网盘资源下载,网盘资源下载工具,国内网盘也支持。
用于将整个网页代码css样式、js、img等资源文件下载下来的实用小工具小白兔整站下载工具XFTV10.0.zip
网站下载工具|仿站小工具V10.6能够自动检测网页编码,支持电脑PC端和WAP手机移动端远程下载网页,同时支持同域名和跨域名下载css文件(导入css文件)、js文件、flash文件,并能够从网页和css文件中分析出图片和背景...
1,基于WinCE的FTP下载工具 2,可实现用户名,密码登陆 3,列出当前可下载的文件 4,下载文件到可执行文件目录下
js下载工具(javascript下载工具)
百度地图矢量下载工具可下载爬取某城市或区域行政区划,建筑物,道路,小区,POI等,并支持转换为矢量数据
115无限速下载工具115无限速下载工具115无限速下载工具115无限速下载工具
豆丁网资料下载工具豆丁网资料下载工具豆丁网资料下载工具
windows下ftp下载工具