Android高能下載庫FileDownloader
阿新 • • 發佈:2018-12-30
我們的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上仔細閱讀原始碼哈~