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);
}
}
分享到:
相关推荐
《百度地图瓦片下载工具详解及其应用》 在IT行业中,地图服务是不可或缺的一部分,尤其对于离线地图的开发者来说,高效、便捷的数据获取方式至关重要。百度地图瓦片下载工具正是为满足这一需求而设计的实用软件。...
"论坛附件下载工具"是一款专为phpwind和Discuz论坛设计的应用程序,旨在方便用户无需登录或配置用户信息即可下载论坛中的附件。这一工具简化了下载流程,为那些需要频繁下载论坛资源的用户提供了便利。 首先,我们...
Xmodem串口下载工具是一款专为IT专业人士设计的实用软件,它结合了串行通信功能和对XMODEM、YMODEM、ZMODEM这三种经典的文件传输协议的支持。在串口通信领域,这样的工具对于系统开发者、硬件工程师以及嵌入式系统的...
标题:“百度地图矢量下载工具” 这个工具的核心功能是针对百度地图提供的一种高效的数据获取手段,它专门设计用于下载和爬取地图上的特定信息。矢量下载工具允许用户选择特定的城市或区域,对其中的行政区划、建筑...
《百度离线地图瓦片下载工具V2.7.0323详解》 在数字化时代,地图已经成为我们生活中不可或缺的一部分。随着移动设备的普及,离线地图的重要性日益凸显,特别是在网络信号不稳定或者数据流量有限的情况下。百度离线...
完整开源的C#多线程下载工具,含源程序和可执行 DEMO,支持 Youtube 等视频网站视频的下载;优秀的插件机制,使得整个程序可扩展性极强。 架构清楚,代码整洁,不失为学习研究的好材料。 项目介绍主页:...
Flash_Loader(ST官方串口下载工具),STM32下载程序软件
豆丁网资料下载工具豆丁网资料下载工具豆丁网资料下载工具
整站下载工具是一种高效实用的软件,主要用于将整个网站的内容及其结构完整地保存到本地计算机上,实现网站的复制和克隆。这种工具通常具备多种功能,如深度抓取网页、保留原始链接结构、下载静态资源(如图片、CSS...
流媒体下载工具!破解版的!下载流媒体的不过选择!
一个直接下载CDN上文件的工具
百度、高德、谷歌、天地图等离线地图下载工具,arcgis,太乐地图离线工具、破解版,可以直接导出arcgis 瓦片格式。
"Webup网站下载工具"是一款专门设计用于抓取和下载整个网站内容的软件。它能够帮助用户方便地保存网络上的整个网站,以便离线浏览或备份。这款工具的主要功能是解析网页链接,按照指定的深度级别进行递归下载,将...
学遥感的人都知道,USGS提供免费优质的遥感图像资源下载,但是需要用其官方下载工具BDA。然而,BDA的下载链接得通过Google服务器,这在国内是下不了的,大家都懂的。 有童鞋提供了前期版本的BDA,但是不太好用了。...
**m3u8格式视频下载工具** m3u8是一种基于文本的媒体播放列表文件格式,主要用于分段传输协议(HTTP Live Streaming, HLS)中,由Apple公司开发,广泛应用于在线视频流服务。这种格式允许将大视频文件分割成较小的...
【标题】:“豆丁文档批量下载工具1”是一款专门针对豆丁网的文档下载软件,它使得用户能够方便快捷地批量获取豆丁网上丰富的PDF格式文档。 【描述】:这款工具设计精巧,操作简单,极大地提升了用户在豆丁网上下载...
这个工具目前来说,可以用以代替迅雷进行磁力下载。试用过很多其它的,这个还是比较好用的。但迅雷毕竟成为会员还是有好处的,下载资源还是比免费的要快,大多数情况下是这样。所以大家下载这个软件使用时还是要了解...
【MSDN WebCast下载工具ireaper】是一款专为IT专业人士设计的实用工具,它使得从MSDN WebCast平台上获取和下载资源变得极其便捷。MSDN WebCast是一个微软提供的在线学习平台,用户可以通过观看各种技术讲座和研讨会...
《SF_BSL430下载工具详解》 在嵌入式系统开发中,针对特定微控制器的编程和调试工具起着至关重要的作用。本文将详细探讨"SF_BSL430下载工具"这一专为430系列微控制器设计的批量生产下载软件,帮助开发者更好地理解...
为了应对这一问题,一些开发者制作了免积分下载工具,旨在让用户能够绕过这些限制,实现自由地获取所需的下载资源。本文将介绍一个名为“免积分下载工具E”的源码,分析其背后的实现原理以及可能涉及的技术。 首先...