下载逻辑在android开发中可谓很常见,那么封装一个通用简洁的下载器时很有必要的。如果不想给工程引入一个很重的jar包那么可以直接复用下面的代码即可。

主要对外接口

构造函数 :     public CommonDownloader(String saveDir, int timeoutMs)

开始下载接口: public void start(String saveFileName, String url)

停止下载接口: public void stop()

 

结构(十分简单)

下载主要由一个Handler和一个下载线程组成,Handler统一处理结果,下载线程负责将下载并将结果发送给Handler。

image

 

内部实现


下载器实现

 

细节分析:

1. Hanlder中弱引用的使用:

当下载器已经被回收时,Listener也不会再收到回调结果

可以参考这篇关于Activity中Handler防止内存泄漏的方法:  https://blog.csdn.net/u010134087/article/details/53610654

2. 停止下载的方法:

首先将标记为  isStop 置为true,这样下载就不再进行(DownloadThread里面写数据时进行了判断),同时调用join方法等待线程停止。 (join方法含义可以参考:https://www.cnblogs.com/NeilZhang/p/8781897.html

版权声明:本文为NeilZhang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/NeilZhang/p/9600859.html