1. 程式人生 > >Android高能下載庫FileDownloader

Android高能下載庫FileDownloader

我們的App中可能會提供給使用者下載檔案或者圖片的場景,然後你可能就會考慮以下名詞了

多工下載
多執行緒下載
斷點續傳
高併發

沒錯,如果你自己手寫下載庫的話需要考慮這四個名詞,接下來我們學習一下FileDownloader庫,該庫的作者對這四點已經封裝的很好了,5000人Star的開源庫你怎可錯過呢?

1 引用匯入

compile 'com.liulishuo.filedownloader:library:1.6.4'//最新版本見github

2 全域性初始化


public class APP extends Application {
    @Override
public void onCreate() { super.onCreate(); FileDownloader.setup(this);//注意作者已經不建議使用init方法 } }

3 具體呼叫

注意這裡的path是檔名而不是資料夾的名字

注意這裡的path是檔名而不是資料夾的名字

注意這裡的path是檔名而不是資料夾的名字

 FileDownloader.getImpl().create(url).setWifiRequired(true).setPath(path).setListener(new FileDownloadListener() {
            @Override
protected void pending(BaseDownloadTask task, int soFarBytes, int totalBytes) { } @Override protected void progress(BaseDownloadTask task, int soFarBytes, int totalBytes) { int percent=(int) ((double) soFarBytes / (double) totalBytes * 100
); textView.setText("("+percent+"%"+")"); } @Override protected void blockComplete(BaseDownloadTask task) { } @Override protected void completed(BaseDownloadTask task) { Toast.makeText(MainActivity.this,"下載完成!",Toast.LENGTH_SHORT).show(); textView.setText("("+"100%"+")"); } @Override protected void paused(BaseDownloadTask task, int soFarBytes, int totalBytes) { } @Override protected void error(BaseDownloadTask task, Throwable e) { } @Override protected void warn(BaseDownloadTask task) { continueDownLoad(task);//如果存在了相同的任務,那麼就繼續下載 } }).start();
 private void continueDownLoad(BaseDownloadTask task) {
        while (task.getSmallFileSoFarBytes()!=task.getSmallFileTotalBytes()){
            int percent=(int) ((double) task.getSmallFileSoFarBytes() / (double) task.getSmallFileTotalBytes() * 100);
            textView.setText("("+percent+"%"+")");
        }
    }

沒錯,就是這麼簡單好用!這個庫遠比我的demo要強大,我只是展示了他的基礎用法,如果使用者有自己特殊的需求還請移步到github上仔細閱讀原始碼哈~