Android通用简洁的下载器
下载逻辑在android开发中可谓很常见,那么封装一个通用简洁的下载器时很有必要的。如果不想给工程引入一个很重的jar包那么可以直接复用下面的代码即可。
主要对外接口
构造函数 : public CommonDownloader(String saveDir, int timeoutMs)
开始下载接口: public void start(String saveFileName, String url)
停止下载接口: public void stop()
结构(十分简单)
下载主要由一个Handler和一个下载线程组成,Handler统一处理结果,下载线程负责将下载并将结果发送给Handler。
内部实现
下载器实现
细节分析:
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)