Android断点续传学习
来源:互联网 发布:xl player for mac 编辑:程序博客网 时间:2024/06/14 10:26
先学习断点续传热热身,为多线程下载预热;
其实重点就是下载这里;
1,下载范围的设定
urlConnection.setRequestProperty("Range","bytes=" + start + "-" + info.getLength());
2 , 文件移动到指定位置
randomFile.seek(start);
其他的没有难度,很简单;可以使用数据库或者文件作为缓存文件
主要是一个思路;这里简单的记录一下;作为学习记录
- class MyThread extends Thread{
- private FileInfo info = null;
- public MyThread(FileInfo threadInfo) {
- this.info = threadInfo;
- }
- @Override
- public void run() {
- //向数据库添加线程信息
- if(!threadDAO.isExits(info.getUrl())){
- threadDAO.insert(info);
- }
- HttpURLConnection urlConnection = null;
- RandomAccessFile randomFile =null;
- InputStream inputStream = null;
- try {
- URL url = new URL(info.getUrl());
- urlConnection = (HttpURLConnection) url.openConnection();
- urlConnection.setConnectTimeout(3000);
- urlConnection.setRequestMethod("GET");
- //设置下载位置
- int start = info.getStart() + info.getNow();
- urlConnection.setRequestProperty("Range","bytes=" + start + "-" + info.getLength());
- //设置文件写入位置
- File file = new File(DOWNLOAD_PATH,FILE_NAME);
- randomFile = new RandomAccessFile(file, "rwd");
- randomFile.seek(start);
- //向Activity发广播
- Intent intent = new Intent(ACTION_UPDATE);
- finished += info.getNow();
- if (urlConnection.getResponseCode() == HttpStatus.SC_PARTIAL_CONTENT) {
- //获得文件流
- inputStream = urlConnection.getInputStream();
- byte[] buffer = new byte[512];
- int len = -1;
- long time = System.currentTimeMillis();
- while ((len = inputStream.read(buffer))!= -1){
- //写入文件
- randomFile.write(buffer,0,len);
- //把进度发送给Activity
- finished += len;
- //看时间间隔,时间间隔大于500ms再发
- if(System.currentTimeMillis() - time >500){
- time = System.currentTimeMillis();
- intent.putExtra("now",finished *100 /fileInfo.getLength());
- context.sendBroadcast(intent);
- }
- //判断是否是暂停状态
- if(isPause){
- threadDAO.update(info.getUrl(),finished);
- return; //结束循环
- }
- }
- //删除线程信息
- threadDAO.delete(info.getUrl());
- }
- }catch (Exception e){
- e.printStackTrace();
- }finally {//回收工作略
- }
- }
- }
- }
阅读全文
0 0
- Android断点续传学习
- Android学习 - Android断点续传核心代码
- android断点续传(学习自慕课网)
- Android断点续传
- android断点续传
- Android断点续传
- Android 断点续传
- Android 断点续传
- Android 断点续传
- android 断点续传
- Android断点续传
- Android 断点续传
- Android断点续传
- Android-断点续传
- android 断点续传
- Android 断点续传
- android+断点续传
- Android学习历程4-Android实现网络多线程断点续传下载
- juqery--获取json数据后一次性填充表单数据的方法
- 影响机器视觉光源效果的因素有哪些?
- redis企业级数据备份和恢复方案
- Codeforces Round #438 C. Qualification Rounds 题解
- Python自学记录_入门(变量)
- Android断点续传学习
- LeetCode-Excel Sheet Column Number/Title
- 数据结构——第六讲、图(上)(1)
- 字符串的全排列
- form表单 onsubmit 坑爹之旅
- 从源码级别了解PHP %00截断原理
- crontab定时任务脚本不执行,日志无执行记录
- 机器视觉系统设计难点有哪些?
- 京东达达前端面试题