1. 程式人生 > >File-downloader框架詳解

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