日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

android自定义下载框架,Android_DownloadUtil

發(fā)布時(shí)間:2025/4/16 Android 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android自定义下载框架,Android_DownloadUtil 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

軟件簡(jiǎn)介

Aria

Aria項(xiàng)目源于15年工作中遇到的一個(gè)文件下載管理的需求,當(dāng)時(shí)被下載折磨的痛不欲生,從那時(shí)起便萌生了編寫一個(gè)簡(jiǎn)單易用,穩(wěn)當(dāng)高效的下載框架,aria經(jīng)歷了1.0到3.0的開發(fā),算是越來越接近當(dāng)初所制定的目標(biāo)了。

Aria有以下特點(diǎn):

簡(jiǎn)單、方便 可以在Activity、Service、Fragment、Dialog、popupWindow、Notification等組件中使用

支持任務(wù)自動(dòng)調(diào)度,使用者不需要關(guān)心任務(wù)狀態(tài)切換的邏輯

支持https地址下載 在配置文件中很容易就可以設(shè)置CA證書的信息

支持300、301、302重定向下載鏈接下載

支持上傳操作

Aria怎樣使用?

如果你覺得Aria對(duì)你有幫助,您的star和issues將是對(duì)我最大支持.^_^

下載

compile 'com.arialyy.aria:Aria:3.1.1'

示例

性能

使用

由于Aria涉及到文件和網(wǎng)絡(luò)的操作,因此需要你在manifest文件中添加以下權(quán)限

使用Aria進(jìn)行下載

添加任務(wù)(不進(jìn)行下載),當(dāng)其他下載任務(wù)完成時(shí),將自動(dòng)下載等待中的任務(wù)

Aria.download(this)

.load(DOWNLOAD_URL)

.setDownloadPath(Environment.getExternalStorageDirectory().getPath() + "/test.apk") //文件保存路徑

.add();

下載

Aria.download(this)

.load(DOWNLOAD_URL) //讀取下載地址

.setDownloadPath(Environment.getExternalStorageDirectory().getPath() + "/test.apk") //設(shè)置文件保存的完整路徑

.start(); //啟動(dòng)下載

暫停

Aria.download(this).load(DOWNLOAD_URL).pause();

恢復(fù)下載

Aria.download(this).load(DOWNLOAD_URL).resume();

取消下載

Aria.download(this).load(DOWNLOAD_URL).cancel();

下載狀態(tài)獲取

如果你希望讀取下載進(jìn)度或下載信息,那么你需要?jiǎng)?chuàng)建事件類,并在onResume(Activity、Fragment)或構(gòu)造函數(shù)(Dialog、PopupWindow),將該事件類注冊(cè)到Aria管理器。

創(chuàng)建事件類

final static class MySchedulerListener extends Aria.DownloadSchedulerListener{

@Override public void onTaskPre(DownloadTask task) {

super.onTaskPre(task);

}

@Override public void onTaskStop(DownloadTask task) {

super.onTaskStop(task);

}

@Override public void onTaskCancel(DownloadTask task) {

super.onTaskCancel(task);

}

@Override public void onTaskRunning(DownloadTask task) {

super.onTaskRunning(task);

}

}

將事件注冊(cè)到Aria

@Override protected void onResume() {

super.onResume();

Aria.whit(this).addSchedulerListener(new MySchedulerListener());

}

Aria參數(shù)配置

配置文件設(shè)置參數(shù)

創(chuàng)建aria_config.xml文件,將其放在assets目錄下,添加以下內(nèi)容

代碼中設(shè)置參數(shù)

除了文件方式外修改Aria參數(shù)外,同樣的,你也可以在代碼中動(dòng)態(tài)修改Aria參數(shù)

通過Aria.get(this).getDownloadConfig()或Aria.get(this).getUploadConfig()直接獲取配置文件,然后修改參數(shù)

如以下所示:

// 修改最大下載數(shù),調(diào)用完成后,立即生效

// 如當(dāng)前下載任務(wù)數(shù)是4,修改完成后,當(dāng)前任務(wù)數(shù)會(huì)被Aria自動(dòng)調(diào)度任務(wù)數(shù)

Aria.get(this).getDownloadConfig().setMaxTaskNum(3);

常用接口

停止所有任務(wù)

Aria.download(this).stopAllTask();

刪除所有任務(wù)

Aria.download(this).removeAllTask();

獲取當(dāng)前任務(wù)的下載速度 速度參數(shù)有點(diǎn)特殊,需要下載事件支持

@Override public void onTaskRunning(DownloadTask task) {

//如果你打開了速度單位轉(zhuǎn)換配置,將可以通過以下方法獲取帶單位的下載速度,如:1 m/s

String convertSpeed = task.getConvertSpeed();

//如果你有自己的單位格式,可以通過以下方法獲取原始byte長度

long speed = task.getSpeed();

}

獲取下載的文件大小、當(dāng)前進(jìn)度百分比 同樣的,你也可以在DownloadTask對(duì)象中獲取下載的文件大小

@Override public void onTaskRunning(DownloadTask task) {

//獲取文件大小

long fileSize = task.getFileSize();

//獲取單位轉(zhuǎn)換后的文件大小

String fileSize1 = task.getConvertFileSize();

//當(dāng)前進(jìn)度百分比

int percent = task.getPercent();

}

tips:為了防止內(nèi)存泄露的情況,事件類需要使用staic進(jìn)行修飾

上傳

添加任務(wù)(只添加,不上傳)

Aria.upload(this)

.load(filePath) //文件路徑

.setUploadUrl(uploadUrl) //上傳路徑

.setAttachment(fileKey) //服務(wù)器讀取文件的key

.add();

上傳

Aria.upload(this)

.load(filePath) //文件路徑

.setUploadUrl(uploadUrl) //上傳路徑

.setAttachment(fileKey) //服務(wù)器讀取文件的key

.start();

取消上傳

Aria.upload(this).load(filePath).cancel();

混淆配置

-dontwarn com.arialyy.aria.**

-keep class com.arialyy.aria.**{*;}

其他

有任何問題,可以在issues給我留言反饋。

后續(xù)版本開發(fā)規(guī)劃

實(shí)現(xiàn)上傳隊(duì)列調(diào)度功能

開發(fā)日志

v_3.1.0 添加Aria配置文件,優(yōu)化代碼

v_3.0.3 修復(fù)暫停后刪除任務(wù),閃退問題,添加刪除記錄的api

v_3.0.2 支持30x重定向鏈接下載

v_3.0.0 添加上傳任務(wù)支持,修復(fù)一些已發(fā)現(xiàn)的bug

v_2.4.4 修復(fù)不支持?jǐn)帱c(diǎn)的下載鏈接拿不到文件大小的問題

v_2.4.3 修復(fù)404鏈接卡頓的問題

v_2.4.2 修復(fù)失敗重試無效的bug

v_2.4.1 修復(fù)下載慢的問題,修復(fù)application、service 不能使用的問題

v_2.4.0 支持https鏈接下載

v_2.3.8 修復(fù)數(shù)據(jù)錯(cuò)亂的bug、添加fragment支持

v_2.3.6 添加dialog、popupWindow支持

v_2.3.3 添加斷點(diǎn)支持、修改下載邏輯,讓使用更加簡(jiǎn)單、修復(fù)一個(gè)內(nèi)存泄露的bug

v_2.3.1 重命名為Aria,下載流程簡(jiǎn)化

v_2.1.1 增加,選擇最大下載任務(wù)數(shù)接口

License

Copyright 2016 AriaLyy(https://github.com/AriaLyy/Aria)

Licensed under the Apache License, Version 2.0 (the "License");

you may not use this file except in compliance with the License.

You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software

distributed under the License is distributed on an "AS IS" BASIS,

WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

See the License for the specific language governing permissions and

limitations under the License.

總結(jié)

以上是生活随笔為你收集整理的android自定义下载框架,Android_DownloadUtil的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。