File-downloader框架詳解
引入
compile 'org.wlf:FileDownloader:0.3.1'
application的onCreate()中初始化FileDownloader
// 建立Builder
FileDownloadConfiguration.Builder builder = new FileDownloadConfiguration.Builder(this);
// 配置Builder
// 配置下載檔案儲存的資料夾
builder.configFileDownloadDir(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator +
"FileDownloader" );
// 配置同時下載任務數量,如果不配置預設為2
builder.configDownloadTaskSize(3);
// 配置失敗時嘗試重試的次數,如果不配置預設為0不嘗試
builder.configRetryDownloadTimes(5);
// 開啟除錯模式,方便檢視日誌等除錯相關,如果不配置預設不開啟
builder.configDebugMode(true);
// 配置連線網路超時時間,如果不配置預設為15秒
builder.configConnectTimeout(25000);// 25秒
// 使用配置檔案初始化FileDownloader
FileDownloadConfiguration configuration = builder.build();
FileDownloader.init(configuration);
**註冊監聽器
不需要的時候取消註冊 也可以不註冊**
private OnFileDownloadStatusListener mOnFileDownloadStatusListener = new OnSimpleFileDownloadStatusListener() {
@Override
public void onFileDownloadStatusRetrying(DownloadFileInfo downloadFileInfo, int retryTimes) {
// 正在重試下載(如果你配置了重試次數,當一旦下載失敗時會嘗試重試下載),retryTimes是當前第幾次重試
}
@Override
public void onFileDownloadStatusWaiting(DownloadFileInfo downloadFileInfo) {
// 等待下載(等待其它任務執行完成,或者FileDownloader在忙別的操作)
}
@Override
public void onFileDownloadStatusPreparing(DownloadFileInfo downloadFileInfo) {
// 準備中(即,正在連線資源)
}
@Override
public void onFileDownloadStatusPrepared(DownloadFileInfo downloadFileInfo) {
// 已準備好(即,已經連線到了資源)
}
@Override
public void onFileDownloadStatusDownloading(DownloadFileInfo downloadFileInfo, float downloadSpeed, long
remainingTime) {
// 正在下載,downloadSpeed為當前下載速度,單位KB/s,remainingTime為預估的剩餘時間,單位秒
}
@Override
public void onFileDownloadStatusPaused(DownloadFileInfo downloadFileInfo) {
// 下載已被暫停
}
@Override
public void onFileDownloadStatusCompleted(DownloadFileInfo downloadFileInfo) {
// 下載完成(整個檔案已經全部下載完成)
}
@Override
public void onFileDownloadStatusFailed(String url, DownloadFileInfo downloadFileInfo, FileDownloadStatusFailReason failReason) {
// 下載失敗了,詳細檢視失敗原因failReason,有些失敗原因你可能必須關心
String failType = failReason.getType();
String failUrl = failReason.getUrl();// 或:failUrl = url,url和failReason.getType()會是一樣的
if (FileDownloadStatusFailReason.TYPE_URL_ILLEGAL.equals(failType)) {
// 下載failUrl時出現url錯誤
} else if (FileDownloadStatusFailReason.TYPE_STORAGE_SPACE_IS_FULL.equals(failType)) {
// 下載failUrl時出現本地儲存空間不足
} else if (FileDownloadStatusFailReason.TYPE_NETWORK_DENIED.equals(failType)) {
// 下載failUrl時出現無法訪問網路
} else if (FileDownloadStatusFailReason.TYPE_NETWORK_TIMEOUT.equals(failType)) {
// 下載failUrl時出現連線超時
} else {
// 更多錯誤....
}
// 檢視詳細異常資訊
Throwable failCause = failReason.getCause();// 或:failReason.getOriginalCause()
// 檢視異常描述資訊
String failMsg = failReason.getMessage();// 或:failReason.getOriginalCause().getMessage()
}
};
// 註冊監聽器
FileDownloader.registerDownloadStatusListener(mOnFileDownloadStatusListener);
註冊檔案資料變化監聽器 如 檔案不存在,被刪除,狀態變化等
private OnDownloadFileChangeListener mOnDownloadFileChangeListener = new OnDownloadFileChangeListener() {
@Override
public void onDownloadFileCreated(DownloadFileInfo downloadFileInfo) { // 一個新下載檔案被建立,也許你需要同步你自己的資料儲存,比如在你的業務資料庫中增加一條記錄 } @Override public void onDownloadFileUpdated(DownloadFileInfo downloadFileInfo, Type type) { // 一個下載檔案被更新,也許你需要同步你自己的資料儲存,比如在你的業務資料庫中更新一條記錄 } @Override public void onDownloadFileDeleted(DownloadFileInfo downloadFileInfo) { // 一個下載檔案被刪除,也許你需要同步你自己的資料儲存,比如在你的業務資料庫中刪除一條記錄 }};
// 註冊監聽器
FileDownloader.registerDownloadFileChangeListener(mOnDownloadFileChangeListener);
下載檔案
// 如果檔案沒被下載過 將建立並開啟下載
// 否則繼續下載 自動會斷點續傳(如果伺服器無法支援斷點續傳將從頭開始下載)
FileDownloader.start(url);
建立一個自定義下載路徑和檔名的下載
FileDownloader.detect(url, new OnDetectBigUrlFileListener() {
@Override
public void onDetectNewDownloadFile(String url, String fileName, String saveDir, long fileSize) {
// 如果有必要,可以改變檔名稱fileName和下載儲存的目錄saveDir
FileDownloader.createAndStart(url, newFileDir, newFileName);
}
@Override
public void onDetectUrlFileExist(String url) {
// 繼續下載,自動會斷點續傳(如果伺服器無法支援斷點續傳將從頭開始下載)
FileDownloader.start(url);
}
@Override
public void onDetectUrlFileFailed(String url, DetectBigUrlFileFailReason failReason) {
// 探測一個網路檔案失敗了,具體檢視failReason
}
});
暫停下載
// 暫停單個下載任務
FileDownloader.pause(url);
// 暫停多個下載任務 list集合
FileDownloader.pause(urls);
// 暫停所有下載任務
FileDownloader.pauseAll();
繼續下載
// 繼續下載,自動會斷點續傳(如果伺服器無法支援斷點續傳將從頭開始下載)
FileDownloader.reStart(url);
// 繼續下載 list集合
FileDownloader.reStart(urls);
移動下載檔案
// 移動單個下載檔案到新資料夾中
FileDownloader.move(url, newDirPath, mOnMoveDownloadFileListener);
// 移動多個下載檔案到新資料夾中 list集合
FileDownloader.move(urls, newDirPath, mOnMoveDownloadFilesListener);
刪除下載
// 刪除單個下載檔案
FileDownloader.delete(url, true, mOnDeleteDownloadFileListener);
// 刪除多個下載檔案 list集合
FileDownloader.delete(urls, true, mOnDeleteDownloadFilesListener);
重新命名下載檔案
// 重新命名一個下載檔案
FileDownloader.rename(url, newName, true, mOnRenameDownloadFileListener);
取消監聽
// 取消註冊下載狀態監聽器(一般在fragment或activity的onDestroy方法中取消註冊)
FileDownloader.unregisterDownloadStatusListener(mOnFileDownloadStatusListener);
// 取消註冊檔案資料變化監聽器
FileDownloader.unregisterDownloadFileChangeListener(mOnDownloadFileChangeListener);
相關推薦
File-downloader框架詳解
引入 compile 'org.wlf:FileDownloader:0.3.1' application的onCreate()中初始化FileDownloader // 建立Builder FileDownloadConfiguration.Bu
jQuery Validate驗證框架詳解
lec false 樣式 廈門 adding 常用 invalid util 類名 jQuery校驗官網地址:http://bassistance.de/jquery-plugins/jquery-plugin-validation 一、導入js庫 <scri
(轉) shiro權限框架詳解04-shiro認證
software protected .get 打開 net 文件的 apach stc cdc http://blog.csdn.net/facekbook/article/details/54906635 shiro認證 本文介紹shiro的認證功能 認證流程
(轉)shiro權限框架詳解05-shiro授權
roles ktr ase sub turn stp exc protected user http://blog.csdn.net/facekbook/article/details/54910606 本文介紹 授權流程 授權方式 授權測試 自定義授權rea
(轉)shiro權限框架詳解06-shiro與web項目整合(下)
tex web項目 ssd ndis form認證 lec rfi 出身 javadoc http://blog.csdn.net/facekbook/article/details/54962975 shiro和web項目整合,實現類似真實項目的應用 web項目中
Django框架詳解
ews ref mode 分享 png django 剖析 href http 一、WSGI剖析 二、Django-url路由系統 三、Django-views視圖與邏輯處理 四、Django-Models與ORM 五、Django-Template模板
Hadoop學習筆記:MapReduce框架詳解
object 好的 單點故障 提高 apr copy 普通 exce 代表性 開始聊mapreduce,mapreduce是hadoop的計算框架,我學hadoop是從hive開始入手,再到hdfs,當我學習hdfs時候,就感覺到hdfs和mapreduce關系的緊密。這個
jmapper框架詳解(前言)
git 方便 再看 嘗試 寫博客 後繼 測試 如果 個人 第一次寫博客,各種不足之處還望理解。 由於項目需要,項目經理在原來的ssm+duubo+mq框架上加入jmapper框架,本來以為是一個很簡單的ORM框架,幾天就搞定了。誰知道自己太笨,整了近一個月才把業務嵌
Fork/Join框架詳解
ceo font print 捕獲異常 rri 完成 ddl 取數據 sys Fork/Join框架是Java 7提供的一個用於並行執行任務的框架,是一個把大任務分割成若幹個小任務,最終匯總每個小任務結果後得到大任務結果的框架。Fork/Join框架要完成兩件事情:
hadoop框架詳解
con 完成 shu ati 默認 logs 應用 sso 分布式存 Hadoop學習隨筆(參考:http://blog.csdn.net/mobanchengshuang/article/details/78786652) Hadoop項目主要包括以下四個模塊 ◆ Had
Android MVC開發框架詳解
div ada 2-2 展示 gpo lose 回調接口 cycle recycler 1、目錄根據需要自行添加 adapter 用於RecyclerView、ListView 等各種適配器 fragment 存放fragment model
Java集合框架詳解
dha put 同時 列表 true 是個 獲取 pac .com 一、集合框架圖 簡化圖: 說明:對於以上的框架圖有如下幾點說明 1.所有集合類都位於java.util包下。Java的集合類主要由兩個接口派生而出:Collection和Map,Collection和M
皇冠體育二代信用盤帶手機版網絡爬蟲之scrapy框架詳解
ML gin spi 通過 file 解決問題 有時 ide bee 網絡爬蟲之scrapy框架詳解twisted介紹 皇冠體育二代信用盤帶手機版 QQ2952777280Twisted是用Python實現的基於事件驅動的網絡引擎框架,scrapy正是依賴於twisted,
Android Volley框架詳解
注:文章出自http://blog.csdn.net/guolin_blog/article/details/17482095,有興趣可以先去閱讀。 Volley簡介 對於Android系統網路通訊,我們知道目前用的最普遍的就是HttpClient和HttpURLConnection,但是H
Java執行緒池Executor框架詳解
Java的執行緒既是工作單元,也是執行機制。從JDK 5開始,把工作單元與執行機制分離開來。工作單元包括Runnable和Callable,而執行機制由Executor框架提供。 Executor框架簡介在HotSpot VM的執行緒模型中,Java執行緒(java.lang.Thread)被一對一對映為本
Java線程池Executor框架詳解
keepalive cto 拒絕 cache task 委托 工作單元 shu keepaliv Java的線程既是工作單元,也是執行機制。從JDK 5開始,把工作單元與執行機制分離開來。工作單元包括Runnable和Callable,而執行機制由Executor框架提供。
Java Web自定義MVC框架詳解
分享一個大神的人工智慧教程!http://blog.csdn.net/jiangjunshow 最近給學生講Java Web,希望他們能夠在學完這部分內容後自己實現一個MVC框架。但是突然發現百度上能搜尋到的靠譜的資料並不是很多,有些只是原理沒有程式碼實現,有些有程式碼實現但是
iOS開發之AddressBookUI框架詳解
iOS開發之AddressBookUI框架詳解 一、關於AddressBookUI框架 AddressbookUI是iOS開發框架中提供的一套通訊錄介面元件。其中封裝好了一套選擇聯絡人,檢視聯絡人的介面,在需要時開發者可以直接呼叫。當然對於聯絡人介面,
iOS開發之AddressBook框架詳解
iOS開發之AddressBook框架詳解 一、寫在前面 首先,AddressBook框架是一個已經過時的框架,iOS9之後官方提供了Contacts框架來進行使用者通訊錄相關操作。儘管如此,AddressBook框架依然是一個非常優雅並且使用方便的通
iOS開發之Accounts框架詳解
iOS開發之Accounts框架詳解 Accounts框架是iOS原生提供的一套賬戶管理框架,其支援Facebook,新浪微博,騰訊微博,Twitter和領英賬戶管理的功能。需要注意,在iOS 11及以上系統中,將此功能已經刪除,因此Accounts.frame