当前位置:   article > 正文

F-droid 源码片段(二)下载模块整理_drfold源代码下载

drfold源代码下载

 这篇文章把F-droid的下载功能经过修改单独拿出来,而且做了一个demo。

希望能对自己后续起到借鉴作用。各位童鞋也可以去进行下载。

 

其实主要的思想有2个

 

1、使用接口进行回调

2、线程直接调用回调,由于无法知道主线程是否进行UI操作,所以把线程的回调进行了包装,使用Handler来发消息。保证不会崩溃。

 

 

项目下载地址:

http://download.csdn.net/download/leehu1987/7979253

 


尚未完成的功能:

1、断点下载(需要数据库)

2、如果下载完成了,下次下载应该是不需要下载了。

 

缺陷:

一个下载线程只能注册一个监听,比较好的办法是可以使用观察者模式通知各个页面。后续进行优化下。

 

 

一、定义一个接口,用于页面下载状态的监听;

  1. <pre class="java" name="code">import java.io.Serializable;
  2. public interface DownloadListener {
  3. public static class Data implements Serializable {
  4. private static final long serialVersionUID = 8954447444334039739L;
  5. private long currentSize;
  6. private long totalSize;
  7. public Data() {
  8. }
  9. public Data(int currentSize, int totalSize) {
  10. this.currentSize = currentSize;
  11. this.totalSize = totalSize;
  12. }
  13. public long getCurrentSize() {
  14. return currentSize;
  15. }
  16. public void setCurrentSize(long currentSize) {
  17. this.currentSize = currentSize;
  18. }
  19. public long getTotalSize() {
  20. return totalSize;
  21. }
  22. public void setTotalSize(long totalSize) {
  23. this.totalSize = totalSize;
  24. }
  25. @Override
  26. public String toString() {
  27. return "Data [currentSize=" + currentSize + ", totalSize="
  28. + totalSize + "]";
  29. }
  30. }
  31. /**
  32. *
  33. * @param data
  34. * : transfer downloaded data
  35. */
  36. public void onProgress(Data data);
  37. /**
  38. *
  39. * @param e
  40. * : exception
  41. */
  42. public void onError(Exception e);
  43. public void onCompleted();
  44. }
 

 

二、定义了一个Downloader父类,为了适应不同的下载,比如使用Http进行下载;使用代理进行下载等。

所以这个类是一个接口类,定义了一些基本的操作方法。

 

package com.example.downloader;


                
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/771173
推荐阅读
相关标签
  

闽ICP备14008679号