中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-09-26 22:00:37 來源:腳本之家 閱讀:155 作者:YWQalways樂觀自信愛 欄目:移動開發

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");


//刷新進度的頻率(毫秒),最小值為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

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

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

广东省| 姚安县| 原阳县| 饶阳县| 九江市| 阳春市| 五莲县| 苗栗县| 宣汉县| 依兰县| 高台县| 宝应县| 云安县| 射阳县| 津市市| 英超| 上饶市| 准格尔旗| 措美县| 曲沃县| 泽库县| 平南县| 凉城县| 台南市| 定西市| 彰化市| 鄯善县| 荔波县| 石泉县| 铜川市| 金沙县| 沙坪坝区| 兴业县| 聊城市| 锡林郭勒盟| 永年县| 科技| 保山市| 宁乡县| 新巴尔虎左旗| 利辛县|