到华为后,信息管理特别严格,文件不能外发。所以好久都没写博客了,今天周日,老婆非要我学习。就闲来无事,写一篇博客,呵呵……

前段时间,项目中提到了断点下载apk并静默安装的需求。本打算用应用市场成熟的经验。结果人家不给借用,就仅仅能自己写了,在网上找了一些资源,并自己封装了一下,就成了今天这篇博客的内容。

断点下载的主要实现就是用SQlite数据库记录下断点时下载的记录。然后再次下载时,查到数据库的记录。再从断点处開始下载,本例中用的是多线程,好了,废话不多说。直接上代码。

这里须要多说两句。大家的项目中以后假设涉及到多线程的,请一定要多考虑一些场景。比方非UI线程中逻辑处理是否全面、各分支场景处理是否得当、下载过程中的各种状态能否够控制、控制的是否正确等等,问题比較多,大家一定要控制好,否则測试时应该会发现很多问题。

DownloadHelper为下载的管理类,是本人封装后的,构建对象后就能够直接运行下载:


     DownloadThread即为管理线程任务的,网上找一下,应该能够找到非常多类似的资源:

DownloadListener就是下载时的同步回调。能够监測到目标文件大小、获取到当前下载的字节数、下载完毕、下载失败的监听:

好了。就这么多了。有关静默安装的,见上也讲了非常多,可是本人觉得都不全面,仅仅说了一点半点的,初步接触静默安装的人看了之后应该还是无法实现静默安装的功能,待下一博客再讲。

本代码中还是有一些问题,由于涉及到多线程,各种场景的考虑不够全面,以后再行优化,不正确的地方,还请大家谅解。谢谢。

项目源代码

Android多线程断点下载的更多相关文章

  1. Android 学习之--android多线程断点下载

    我们平时都用"迅雷"下载软件,当下载到一半的时候突然断网,下次开启的时候能够从上次下载的地方继续下载,而且下载速度很快,那么这是怎么做到的呢! 其实它的“快”其实就是多线程的下载实 ...

  2. Android 多线程断点下载(非原创)

    1.服务器的CPU分配给每条线程的时间片相同,服务器带宽平均分配给每条线程,所以客户端开启的线程越多,就能抢占到更多的服务器资源,这里在客户端开启多个线程来从服务器下载资源 2.fragment_ma ...

  3. Android 多线程断点下载

    package com.itheima.mutiledownloader; import java.io.BufferedReader; import java.io.File; import jav ...

  4. Android多线程断点下载的代码流程解析

    Step 1:创建一个用来记录线程下载信息的表 创建数据库表,于是乎我们创建一个数据库的管理器类,继承SQLiteOpenHelper类 重写onCreate()与onUpgrade()方法 DBOp ...

  5. 我的Android进阶之旅------>Android基于HTTP协议的多线程断点下载器的实现

    一.首先写这篇文章之前,要了解实现该Android多线程断点下载器的几个知识点 1.多线程下载的原理,如下图所示 注意:由于Android移动设备和PC机的处理器还是不能相比,所以开辟的子线程建议不要 ...

  6. Android(java)学习笔记216:多线程断点下载的原理(Android实现)

    之前在Android(java)学习笔记215中,我们从JavaSE的角度去实现了多线程断点下载,下面从Android角度实现这个断点下载: 1.新建一个Android工程: (1)其中我们先实现布局 ...

  7. Android(java)学习笔记159:多线程断点下载的原理(Android实现)

    之前在Android(java)学习笔记215中,我们从JavaSE的角度去实现了多线程断点下载,下面从Android角度实现这个断点下载: 1. 新建一个Android工程: (1)其中我们先实现布 ...

  8. 33、多线程断点下载的实现&界面的更新

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  9. andoid 多线程断点下载

    本示例介绍在Android平台下通过HTTP协议实现断点续传下载. 我们编写的是Andorid的HTTP协议多线程断点下载应用程序.直接使用单线程下载HTTP文件对我们来说是一件非常简单的事.那么,多 ...

随机推荐

  1. A - Diverse Team

    Problem description There are n students in a school class, the rating of the i-th student on Codeho ...

  2. Android布局需要知道的基础知识

    eclipse配置环境变量: 1.在 eclipse 中的 Window --> preferences  --> Android(安装了ADT的前提下才能看到Android) --> ...

  3. ie8及其以下版本兼容性问题之圆角

    解决办法:在http://css3pie.com/页面下载一个PIE.htc的文件,加载到根目录下,然后在css中加上一句behavior:url(../js/PIE.htc);如下: .border ...

  4. 【SQL】CONNECT BY 层次化查询

    层次化查询,顾名思义就是把查询结果有层次的呈现出来.层次化查询结果类似于树状结构,最顶端的是“根节点”,下面是“父节点”,没有子节点的是“叶节点”. 为了让一个或多个表具有层次关系,必须使用相关的字段 ...

  5. VHDL之concurrent之block

    1 Simple BLOCK The simple block represents only a way of partitioning the code. It allows concurrent ...

  6. 4、scala数组

    1.Array 2.ArrayBuffer 3.遍历Array和ArrayBuffer 4.数组常见操作 1.  Array Scala中,array代表的含义与java类似,也是长度不可改变的数组. ...

  7. [转]VIM字符替换

    语法为 :[addr]s/源字符串/目的字符串/[option] 全局替换命令为::%s/源字符串/目的字符串/g [addr] 表示检索范围,省略时表示当前行. 如:"1,20" ...

  8. 从柯洁对战AlphaGo,看商业智能

    [摘要]李开复赛前说,AlphaGo和李世石的人机大战是第一次,可能还有悬念,那今天的AlphaGo已经在围棋的世界中彻底甩开了人类,不再拥有任何其他的可能.并指出,AlphaGo和柯洁的比赛并非没有 ...

  9. 【sqli-labs】 less10 GET - Blind - Time based. - Double quotes (基于时间的双引号盲注)

    这个和less9一样,单引号改完双引号就行了 http://localhost/sqli/Less-10/?id=1" and sleep(5)%23 5s后页面完成刷新 http://lo ...

  10. hibernate与spring整合

    Spring与Hibernate整合关键点: 1) Hibernate的SessionFactory对象交给Spring创建: 2) hibernate事务交给spring的声明式事务管理. 1. D ...