安卓開發之非常好用的AndroidOne架構DownloadManager,androidone架構
AndroidOne架構是採用MVC模式,整合了Android主流開源技術及組件,是一款極速且簡單高效開發架構,整個項目包含兩個部分AndroidOne,oneCore
AndroidOne為示範項目,裡面介紹了該架構的使用方法及Demo
oneCore是該架構的核心項目,AndroidOne依賴於oneCore
:https://github.com/devinhu/androidone
AndroidOne架構繼承了很多的功能,在文檔中可以得知,在這裡主要介紹一下DownloadManager的使用
1.首先要得到一個DownloadManager的執行個體,除了下面這種沒有參數的方法,還有一種帶參數的方法來產生執行個體getInstance(String rootPath);rootPath是設定下載的檔案儲存在哪裡
如果不設定會儲存在SDCard中download目錄下。
DownloadManager dm = DownloadManager.getInstance();
2.然後設定DownloadManager的回調方法
dm.setDownLoadCallback(new DownLoadCallback(){ @Override public void onLoading(String url, int bytesWritten, int totalSize) { } @Override public void onSuccess(String url, String filePath) { } @Override public void onFailure(String url, String strMsg) { } });
這個回調是對下載過程的一些處理:
onLoading()方法當檔案正在下載的時候會頻繁的調用。裡面有三個參數,URL可以用來唯一標識當前是哪個下載任務,bytesWritten是當前已經下載的檔案大小;totalSize是下載檔案的總 大小。通過這兩個int型的資料可以確定當前檔案下載的進度。
onSuccess()方法會在下載完成的時候調用。
onFailuer()方法會在下載失敗的時候調用。
3.添加下載檔案,開始下載,暫停下載,繼續下載
dm.addHandler(url);dm.pauseHandler(url);dm.continueHandler(url);
看源碼可以發現在DownloadManager裡面有一個方法startManager();這個方法的作用是開始下載。我們在代碼中沒有調用這個方法是因為addHandler()方法中會調用startManager()方法
上面三個方法建議在按鈕的點擊事件中調用,這樣可以更加直觀的控制整個下載過程
DownloadManager是一個單例類,所以使用的時候如果產生了太多的執行個體不需要擔心;
DownloadManager支援多線程下載,多任務同時下載,斷點續傳等等功能,DownloadManager預設支援同時下載五個檔案,如果你的不能滿足你的需求可以更改任務數
AndroidOne架構源碼使用eclipse開發,所以在Android Studio上面使用需要先將oneCore項目導成Android Studio 格式,再講oneCore匯入Android Studio添加項目依賴
或者在eclipse裡面直接導成jar包,將jar包添加到libs目錄下引入項目。在導成jar包的時候注意不要勾選設定檔,否則會報錯