云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > Android多线程文件下载器论文源码

Android多线程文件下载器论文源码

  • 62 次阅读
  • 3 次下载
  • 2026/4/30 8:09:55

安卓环境下多线程文件下载器

参考文献

[1] 杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,2010

[2] 余志龙.Google Android SDK开发范例大全[M].北京:人民邮电出版社,2011 [3] 姚昱旻,刘卫国.Android的架构与应用[J].计算机系统应用,2008,17(11),42-44 [4] 孙晓宇.Android手机界面管理系统的设计与实现[D].北京:北京邮电大学,2009 [5] 艾伦,欧文斯.SQLite权威指南(第二版)[M].北京;电子工业出版社,2012 [6] 李代平.软件工程(第2版)[M].北京:清华大学出版社,2004 [7] 李刚.疯狂Andriod讲义[M].北京:电子工业出版社,2011

[8] 赵亮,张维.基于Android技术的界面设计与研究[J].电脑知识与技术,2009,5(28):24-27 [9] 公磊.基于Android的移动终端应用程序开发与研究[J].计算机于现代化,2008,7(15),35-37 [10] 陈昱,江兰帆,基于Google Android平台的移动开发研究[J].福建电脑,2008,15(24),42-44 [11] 邓凡平.深入理解Andriod [M].北京:机械工业出版社,2011

[12] 张利国,代闻,龚海平.Android移动开发案例详解[M].北京:人民邮电出版社,2010

18

安卓环境下多线程文件下载器

附录

多线程功能的实现

public class DownloadThread extends Thread { private static final String TAG = \ private File saveFile; private URL downUrl; private int block; /* 下载开始位置 */ private int threadId = -1; private int downLength; private boolean finish = false; private FileDownloader downloader; public DownloadThread(FileDownloader downloader, URL downUrl, File saveFile, int block, int downLength, int threadId) { this.downUrl = downUrl; this.saveFile = saveFile; this.block = block; this.downloader = downloader; this.threadId = threadId; this.downLength = downLength; } @Override public void run() { if(downLength < block){//未下载完成 try { HttpURLConnection http = (HttpURLConnection) downUrl.openConnection(); http.setConnectTimeout(5 * 1000); http.setRequestMethod(\ http.setRequestProperty(\image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\ http.setRequestProperty(\ http.setRequestProperty(\ http.setRequestProperty(\ int startPos = block * (threadId - 1) + downLength;//开始位置 int endPos = block * threadId -1;//结束位置 http.setRequestProperty(\设置获取实体数据的范围 http.setRequestProperty(\\(compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)\ http.setRequestProperty(\ InputStream inStream = http.getInputStream(); byte[] buffer = new byte[1024]; int offset = 0; print(\startPos); RandomAccessFile threadfile = new RandomAccessFile(this.saveFile, \ threadfile.seek(startPos);//移动指针到文件的某个位置 while (!FileDownloader.isPause && (offset = inStream.read(buffer, 0, 1024)) != -1) { threadfile.write(buffer, 0, offset); // 19

安卓环境下多线程文件下载器

} downLength += offset; downloader.update(this.threadId, downLength); downloader.saveLogFile(); downloader.append(offset); } threadfile.close(); inStream.close(); print(\ if (!FileDownloader.isPause) Log.i(\ this.finish = true; } catch (Exception e) { this.downLength = -1; print(\ } } } private static void print(String msg){ Log.e(TAG, msg); } /** * 下载是否完成 * @return */ public boolean isFinish() { return finish; } /** * 已经下载的内容大小 * @return 如果返回值为-1,代表下载失败 */ public long getDownLength() { return downLength; } 断点下载 public class FileDownloader { private static final String TAG = \ private Context context; private FileService fileService; /* 已下载文件长度 */ private int downloadSize = 0; /* 原始文件长度 */ private int fileSize = 0; /* 线程数 */ private DownloadThread[] threads; /* 本地保存文件 */ private File saveFile; /* 是否停止下载 */ public static boolean isPause; /* 缓存各线程下载的长度 */ private Map data = new ConcurrentHashMap(); /* 每条线程下载的长度 */ private int block; /* 下载路径 */ private String downloadUrl; 20

安卓环境下多线程文件下载器

/** * 获取线程数 */ public int getThreadSize() { return threads.length; } /** * 获取文件大小 * * @return */ public int getFileSize() { return fileSize; } /** * 累计已下载大小 * * @param size */ protected synchronized void append(int size) { downloadSize += size; } /** * 更新指定线程最后下载的位置 * * @param threadId * 线程id * @param pos * 最后下载的位置 */ protected void update(int threadId, int pos) { this.data.put(threadId, pos); } /** * 保存记录文件 */ protected synchronized void saveLogFile() { this.fileService.update(this.downloadUrl, this.data);//保存到数据库中 } /** * 构建文件下载器 * * @param downloadUrl * 下载路径 * @param fileSaveDir * 文件保存目录 * @param threadNum * 下载线程数 */ public FileDownloader(Context context, String downloadUrl, File fileSaveDir, int threadNum) { try { this.context = context; this.downloadUrl = downloadUrl; fileService = new FileService(this.context); URL url = new URL(this.downloadUrl); if (!fileSaveDir.exists()) 21

搜索更多关于: Android多线程文件下载器论文源码 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

安卓环境下多线程文件下载器 参考文献 [1] 杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,2010 [2] 余志龙.Google Android SDK开发范例大全[M].北京:人民邮电出版社,2011 [3] 姚昱旻,刘卫国.Android的架构与应用[J].计算机系统应用,2008,17(11),42-44 [4] 孙晓宇.Android手机界面管理系统的设计与实现[D].北京:北京邮电大学,2009 [5] 艾伦,欧文斯.SQLite权威指南(第二版)[M].北京;电子工业出版社,2012 [6] 李代平.软件工程(第2版)[M].北京:清华大学出版社,2004 [7] 李刚.疯狂Andriod讲义[M].北京:电子工业出版社,2011 [8] 赵亮,张维.基于Android技术的界面设计与研究[J]

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com