国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android斷點續傳下載器JarvisDownloader的示例

2019-10-22 18:12:14
字體:
來源:轉載
供稿:網友

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那么強大,但在下載文件方面,具備了很多的優點。

Android,斷點續傳,JarvisDownloader

主要功能

  1. 支持斷點續傳下載
  2. 支持自定義文件夾路徑、文件名。
  3. 支持自定義SQLiteOpenHelper,用于保存下載進度等
  4. 下載進度回調時自動切換到UI線程,方便更新UI。
  5. 自動與activity綁定生命周期,無需手動釋放
  6. activity不可見時,不會更新UI,可見時會自動恢復狀態
  7. 支持查詢下載歷史列表

使用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");//刷新進度的頻率(毫秒),最小值為100downloader.refreshTime(1000);//設置狀態監聽//假如當前context為activity的話Jarvis已經自動幫你回調到主線程了,不需要調用activity.runOnUiThreaddownloader.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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 汨罗市| 腾冲县| 贵阳市| 利川市| 电白县| 丹寨县| 肇东市| 东方市| 张家川| 沭阳县| 鹤庆县| 宁海县| 会东县| 施秉县| 铜川市| 洛浦县| 和静县| 石柱| 彭水| 灌云县| 错那县| 泰州市| 湘潭县| 昌黎县| 玉溪市| 宜阳县| 吴桥县| 大悟县| 彭阳县| 临安市| 海兴县| 乐东| 马关县| 杂多县| 元朗区| 贡嘎县| 南和县| 阿瓦提县| 微山县| 佛教| 大冶市|