您好,登錄后才能下訂單哦!
JarvisDownloader
熟悉漫威電影的人都知道Jarvis,他是鋼鐵俠的智能管家,幫助鋼鐵俠制造裝甲、分析大量數據、協助建模等各種智能工作,可惜在復聯2中,Jarvis與靈魂寶石共同結合成Vision,鋼鐵俠失去了這位如親人一般的智能AI,后來Tony用F.R.I.D.A.Y代替了Jarvis的工作,但從鋼鐵俠與Friday的互動來看,他只把Friday當做一般的AI,并沒有投入如對待Jarvis的感情。
最近復聯3上映,中國沒有同步上映,真的太可惜了,五一本來還想過去香港看,但想到到時會人生人海還是算了,所以假期閑余時間就擼了個 JarvisDownloader ,之所以以Jarvis命名,也是因為我太喜歡Jarvis這個AI了,它屬于人工智能的頂端啊! JarvisDownloader 雖然沒有Jarvis那么強大,但在下載文件方面,具備了很多的優點。
主要功能
使用JarvisDownloader
依賴遠程庫
gradle
repositories { maven{ url "https://jitpack.io" } } dependencies { api 'com.github.yuwenque:JarvisDownloader:0.2.0' }
初始化數據庫
Jarvis.init(new DefaultDownloadHistoryDBHelper(applicationContext));
你也可以自定義一個繼承于AbsDownloadHistoryDBHelper的管理類,用于保存下載進度等操作,詳細操作請參考 DefaultDownloadHistoryDBHelper
權限設置
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Jarvis.Downloader構建下載任務
請在activity或service中調用
//構成下載器 Jarvis.Downloader downloader = Jarvis.with(this).withUrl("http://pic1.win4000.com/wallpaper/2017-10-11/59dde2bca944f.jpg"); //是否允許ui不可見時繼續下載 downloader.allowBackgroundDownload(true); //多線程下載數量 downloader.threadCount(3); //設置下載目錄,非必須,默認目錄為 Environment.getExternalStorageDirectory()+File.separator+"Jarvis" downloader.filePath(Environment.getExternalStorageDirectory() + File.separator + "Jarvis"); //設置文件名,非必須,但建議手動設置,默認為服務器文件的名字 downloader.fileName("test.jpg"); //刷新進度的頻率(毫秒),最小值為100 downloader.refreshTime(1000); //設置狀態監聽 //假如當前context為activity的話Jarvis已經自動幫你回調到主線程了,不需要調用activity.runOnUiThread downloader.setDownloadListener(new DownloadListener() { /** * 文件下載完畢回調 * @param file */ @Override public void onSuccess(File file) { } /** * 進度回調 * @param downloadedSize 當前下載的文件大小 * @param progress 當前進度 0-1.0 */ @Override public void onProgress(long downloadedSize, float progress) { } /** * 開始下載時 */ @Override public void onStart() { } /** * 下載暫停時 */ @Override public void onPause() { } /** * 下載失敗時 */ @Override public void onFail() { } /** * 被刪除時 * @param b 刪除成功標志位 */ @Override public void onDelete(boolean b) { } }); //開始下載 downloader.download(); //手動暫停 downloader.pause(); //恢復下載 downloader.recovery(); //手動刪除本地記錄,但不刪除文件,文件下載過程中不允許刪除 downloader.delete(); //刪除下載記錄以及文件,文件下載過程中不允許刪除 downloader.deleteCacheFile(); //獲取當前的下載狀態 downloader.getDownloadState(); //同步獲取上次下載的進度,由于是查詢數據庫的操作,所以建議新開線程來獲取 downloader.getDownloadedProgress(); //異步獲取下載進度 downloader.getDownloadedProgress(new DataCallBack<Float>() { @Override public void onData(Float progress) { } });
上述代碼也可以簡化成以下形式
Jarvis.with(this) .withUrl("http://pic1.win4000.com/wallpaper/2017-10-11/59dde2bca944f.jpg") .allowBackgroundDownload(true) .threadCount(3) .filePath(Environment.getExternalStorageDirectory() + File.separator + "Jarvis") .fileName("test.jpg") .refreshTime(1000) .setDownloadListener(listener).download();
Jarvis管理下載任務
//異步獲取下載歷史記錄,下載進度請自己計算 Jarvis.getInstance().getDownloadedList(new DataCallBack<List<LocalFileRecordBean>>() { @Override public void onData(List<LocalFileRecordBean> localFileRecordBeans) { LocalFileRecordBean fileRecordBean= localFileRecordBeans.get(0); //下載進度 float progress = fileRecordBean.getDownloadedLength()*1.0f/fileRecordBean.getFileTotalLength(); } }); //停止所有下載任務 Jarvis.getInstance().pauseAllDownloader(); //開始所有下載任務 Jarvis.getInstance().startAllDownload(); //刪除所有下載任務及文件 Jarvis.getInstance().forceDeleteAll(); //設置下載的線程池長度,如果當前有10個下載任務, //每個任務開啟3個線程進行斷點續傳下載,那么此時只設置20個的話,將有部分下載任務需等待其他線程執行完任務才能開始 Jarvis.getInstance().initThreadPoolLength(20);
源碼閱讀請跳轉到 https://github.com/yuwenque/JarvisDownloader
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。