简言:
android 下载在开发中是非常常见的,下载一个视频,下载一个图片等等,我们本篇博客主要讲解 的是如何断点续传实现下载图片,apk等,开始躁动起来
1.什么是线程
线程主要分为主线程:主要处理界面相关的事情,
子线程: 处理一些耗时操作
2.都有哪些线程?
线程除了Thread之外,还有asyncTask,InterService,handlerThread,
我们常见的就是AsyncTask,它主要做一些耗时的操作,耗时操作完成后更新主线程UI;
存在缺陷就是AsyncTask维护一个长度为128的线程池,当我们缓存队列满的时候,我们向线程提交任务的时候回抛出异常,
3.AsyncTask
它是一个抽象的泛型参数,有三个泛型参数:
1)params: 表示输入的参数类型
2)progress: 表示后台执行任务的进度类型
3)result: 后台任务返回结果
AsyncTask还有四个核心方法
1)onPreExecture: 在执行异步之前执行,做一些准备工作
2)doInBackground: 执行异步任务的,通过publshProgress跟新任务进度
3)onProgressUpdate: 在后台执行任务发生改变是调用
4)onPostexecture: 在后台异步任务执行之后调用,将结果返回
4.实现断点续传下载图片
线程已经了解了 ,我们实现断点续传()
1)首先自定义一个线程ThreadManger来集成Thread(直接上代码)
private int threadId; // 线程ID private int startPosition; // 下载开始位置 private int endPosition; // 下载结束位置 private String fileName; // 文件名称 private String urlPath; // 文件路径 private DownloadManager.Progress progress; private int all; public ThreadManger(int threadId, int startPosition, int endPosition, String fileName, String urlPath, DownloadManager.Progress progress, int all) { this.threadId = thr