真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

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

JarvisDownloader

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),洛龍企業(yè)網(wǎng)站建設(shè),洛龍品牌網(wǎng)站建設(shè),網(wǎng)站定制,洛龍網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,洛龍網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

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

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

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

主要功能

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

使用JarvisDownloader

依賴遠程庫

gradle

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

dependencies {

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

}

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

Jarvis.init(new DefaultDownloadHistoryDBHelper(applicationContext));

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

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



Jarvis.Downloader構(gòu)建下載任務(wù)

請在activity或service中調(diào)用

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

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

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

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


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

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

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

  /**
   * 進度回調(diào)
   * @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();

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

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

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

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

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

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

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

  }
});

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

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

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

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

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。


標題名稱:Android斷點續(xù)傳下載器JarvisDownloader的示例
文章路徑:http://weahome.cn/article/gcdsse.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部