亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Android斷點(diǎn)續(xù)傳下載器JarvisDownloader的示例

 更新時(shí)間:2018年05月02日 10:50:35   作者:YWQalways樂觀自信愛  
本篇文章主要介紹了Android斷點(diǎn)續(xù)傳下載器JarvisDownloader的示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

JarvisDownloader

熟悉漫威電影的人都知道Jarvis,他是鋼鐵俠的智能管家,幫助鋼鐵俠制造裝甲、分析大量數(shù)據(jù)、協(xié)助建模等各種智能工作,可惜在復(fù)聯(lián)2中,Jarvis與靈魂寶石共同結(jié)合成Vision,鋼鐵俠失去了這位如親人一般的智能AI,后來Tony用F.R.I.D.A.Y代替了Jarvis的工作,但從鋼鐵俠與Friday的互動(dòng)來看,他只把Friday當(dāng)做一般的AI,并沒有投入如對待Jarvis的感情。

最近復(fù)聯(lián)3上映,中國沒有同步上映,真的太可惜了,五一本來還想過去香港看,但想到到時(shí)會(huì)人生人海還是算了,所以假期閑余時(shí)間就擼了個(gè) JarvisDownloader ,之所以以Jarvis命名,也是因?yàn)槲姨矚gJarvis這個(gè)AI了,它屬于人工智能的頂端?。?JarvisDownloader 雖然沒有Jarvis那么強(qiáng)大,但在下載文件方面,具備了很多的優(yōu)點(diǎn)。

主要功能

  1. 支持?jǐn)帱c(diǎn)續(xù)傳下載
  2. 支持自定義文件夾路徑、文件名。
  3. 支持自定義SQLiteOpenHelper,用于保存下載進(jìn)度等
  4. 下載進(jìn)度回調(diào)時(shí)自動(dòng)切換到UI線程,方便更新UI。
  5. 自動(dòng)與activity綁定生命周期,無需手動(dòng)釋放
  6. activity不可見時(shí),不會(huì)更新UI,可見時(shí)會(huì)自動(dòng)恢復(fù)狀態(tài)
  7. 支持查詢下載歷史列表

使用JarvisDownloader

依賴遠(yuǎn)程庫

gradle

repositories {
  
  maven{
    url "https://jitpack.io"
  }
}

dependencies {

  api 'com.github.yuwenque:JarvisDownloader:0.2.0'

}

初始化數(shù)據(jù)庫

Jarvis.init(new DefaultDownloadHistoryDBHelper(applicationContext));

你也可以自定義一個(gè)繼承于AbsDownloadHistoryDBHelper的管理類,用于保存下載進(jìn)度等操作,詳細(xì)操作請參考 DefaultDownloadHistoryDBHelper

權(quán)限設(shè)置

<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構(gòu)建下載任務(wù)

請?jiān)赼ctivity或service中調(diào)用

//構(gòu)成下載器
Jarvis.Downloader downloader = Jarvis.with(this).withUrl("http://pic1.win4000.com/wallpaper/2017-10-11/59dde2bca944f.jpg");

//是否允許ui不可見時(shí)繼續(xù)下載
downloader.allowBackgroundDownload(true);

//多線程下載數(shù)量
downloader.threadCount(3);
//設(shè)置下載目錄,非必須,默認(rèn)目錄為 Environment.getExternalStorageDirectory()+File.separator+"Jarvis"
downloader.filePath(Environment.getExternalStorageDirectory() + File.separator + "Jarvis");

//設(shè)置文件名,非必須,但建議手動(dòng)設(shè)置,默認(rèn)為服務(wù)器文件的名字
downloader.fileName("test.jpg");


//刷新進(jìn)度的頻率(毫秒),最小值為100
downloader.refreshTime(1000);

//設(shè)置狀態(tài)監(jiān)聽
//假如當(dāng)前context為activity的話Jarvis已經(jīng)自動(dòng)幫你回調(diào)到主線程了,不需要調(diào)用activity.runOnUiThread
downloader.setDownloadListener(new DownloadListener() {

  /**
   * 文件下載完畢回調(diào)
   * @param file
   */
  @Override
  public void onSuccess(File file) {
  }

  /**
   * 進(jìn)度回調(diào)
   * @param downloadedSize 當(dāng)前下載的文件大小
   * @param progress 當(dāng)前進(jìn)度 0-1.0
   */
  @Override
  public void onProgress(long downloadedSize, float progress) {


  }

  /**
   * 開始下載時(shí)
   */
  @Override
  public void onStart() {

  }

  /**
   * 下載暫停時(shí)
   */
  @Override
  public void onPause() {

  }

  /**
   * 下載失敗時(shí)
   */
  @Override
  public void onFail() {

  }

  /**
   * 被刪除時(shí)
   * @param b 刪除成功標(biāo)志位
   */
  @Override
  public void onDelete(boolean b) {

  }
});


//開始下載
downloader.download();

//手動(dòng)暫停
downloader.pause();

//恢復(fù)下載
downloader.recovery();

//手動(dòng)刪除本地記錄,但不刪除文件,文件下載過程中不允許刪除
downloader.delete();

//刪除下載記錄以及文件,文件下載過程中不允許刪除
downloader.deleteCacheFile();

//獲取當(dāng)前的下載狀態(tài)
downloader.getDownloadState();

//同步獲取上次下載的進(jìn)度,由于是查詢數(shù)據(jù)庫的操作,所以建議新開線程來獲取
downloader.getDownloadedProgress();
//異步獲取下載進(jìn)度
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管理下載任務(wù)

//異步獲取下載歷史記錄,下載進(jìn)度請自己計(jì)算
Jarvis.getInstance().getDownloadedList(new DataCallBack<List<LocalFileRecordBean>>() {
  @Override
  public void onData(List<LocalFileRecordBean> localFileRecordBeans) {

    LocalFileRecordBean fileRecordBean= localFileRecordBeans.get(0);
    //下載進(jìn)度
    float progress = fileRecordBean.getDownloadedLength()*1.0f/fileRecordBean.getFileTotalLength();

  }
});

//停止所有下載任務(wù)
Jarvis.getInstance().pauseAllDownloader();

//開始所有下載任務(wù)
Jarvis.getInstance().startAllDownload();

//刪除所有下載任務(wù)及文件
Jarvis.getInstance().forceDeleteAll();

//設(shè)置下載的線程池長度,如果當(dāng)前有10個(gè)下載任務(wù),
//每個(gè)任務(wù)開啟3個(gè)線程進(jìn)行斷點(diǎn)續(xù)傳下載,那么此時(shí)只設(shè)置20個(gè)的話,將有部分下載任務(wù)需等待其他線程執(zhí)行完任務(wù)才能開始
Jarvis.getInstance().initThreadPoolLength(20);

源碼閱讀請?zhí)D(zhuǎn)到 https://github.com/yuwenque/JarvisDownloader

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論