韩国三级高清手机在线版-韩国三级电影久久-韩国三级hd中文字幕一男多女-韩国三级hd中文字幕久久精品-日本精品在线视频-日本精品在线观看视频

一、DownloadManager簡單介紹
DownloadManager是系統開放給第三方應用使用的類,包含兩個靜態內部類DownloadManager.Query和DownloadManager.Request。DownloadManager.Request用來請求一個下載,DownloadManager.Query用來查詢下載信息,這兩個類的具體功能會在后面穿插介紹。DownloadManager的源碼可見DownloadManager@Grepcode。

 

DownloadManager主要提供了下面幾個接口:
public long enqueue(Request request)執行下載,返回downloadId,downloadId可用于后面查詢下載信息。若網絡不滿足條件、Sdcard掛載中、超過最大并發數等異常會等待下載,正常則直接下載。
public int remove(long… ids)刪除下載,若下載中取消下載。會同時刪除下載文件和記錄。
public Cursor query(Query query)查詢下載信息。

 

public static Long getRecommendedMaxBytesOverMobile(Context context通過移動網絡下載的最大字節數
public String getMimeTypeForDownloadedFile(long id)得到下載的mimeType,如何設置后面會進行介紹

 

其它:通過查看代碼我們可以發現還有個CursorTranslator私有靜態內部類。這個類主要對Query做了一層代理。將 DownloadProvider和DownloadManager之間做個映射。將DownloadProvider中的十幾種狀態對應到了 DownloadManager中的五種狀態,DownloadProvider中的失敗、暫停原因轉換為了DownloadManager的原因。

 

二、下載管理示例
下面具體介紹利用DownloadManager進行下載。
1、AndroidManifest中添加權限

 

Java

1

2

<uses-permissionandroid:name="android.permission.INTERNET"/>

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

網絡訪問權限是必須的,下載地址為sdcard的話需要添加sdcard寫權限。

 

2、調用DownloadManager.Request開始下載

 

Java

1

2

3

4

5

6

7

8

9

10

11

DownloadManagerdownloadManager=(DownloadManager)getSystemService(DOWNLOAD_SERVICE);

StringapkUrl="http://img.meilishuo.net/css/images/AndroidShare/Meilishuo_3.6.1_10006.apk";

DownloadManager.Requestrequest=newDownloadManager.Request(Uri.parse(apkUrl));

request.setDestinationInExternalPublicDir("Trinea","MeiLiShuo.apk");

// request.setTitle("MeiLiShuo");

// request.setDescription("MeiLiShuo desc");

// request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);

// request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);

// request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_HIDDEN);

// request.setMimeType("application/com.trinea.download.file");

longdownloadId=downloadManager.enqueue(request);

上面調用downloadManager的enqueue接口進行下載,返回唯一的downloadId。

 

DownloadManager.Request除了構造函數的Uri必須外,其他設置都為可選設置。下面逐個介紹下:
request.setDestinationInExternalPublicDir(“Trinea”, “MeiLiShuo.apk”);表示設置下載地址為sd卡的Trinea文件夾,文件名為MeiLiShuo.apk。

setDestinationInExternalPublicDir源碼

從源碼中我們可以看出下載完整目錄為Environment.getExternalStoragePublicDirectory(dirType)。 不過file是通過file.mkdir()創建的,這樣如果上級目錄不存在就會新建文件夾異常。所以下載前我們最好自己調用File的mkdirs方法 遞歸創建子目錄,如下:

 

Java

1

2

Filefolder=newFile(folderName);

return(folder.exists()&&folder.isDirectory())?true:folder.mkdirs();

否則,會報異常

1

2

java.lang.IllegalStateException:Unabletocreatedirectory:/storage/sdcard0/Trinea/aa

atandroid.app.DownloadManager$Request.setDestinationInExternalPublicDir(DownloadManager.java)

其他設置下載路徑接口為 setDestinationUri,setDestinationInExternalFilesDir,setDestinationToSystemCache。 其中setDestinationToSystemCache僅限系統app使用。

 

request.allowScanningByMediaScanner();表示允許MediaScanner掃描到這個文件,默認不允許。

request.setTitle(“MeiLiShuo”);設置下載中通知欄提示的標題
request.setDescription(“MeiLiShuo desc”);設置下載中通知欄提示的介紹
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
表示下載進行中和下載完成的通知欄是否顯示。默認只顯示下載中通知。VISIBILITY_VISIBLE_NOTIFY_COMPLETED表示下載完 成后顯示通知欄提示。VISIBILITY_HIDDEN表示不顯示任何通知欄提示,這個需要在AndroidMainfest中添加權限 android.permission.DOWNLOAD_WITHOUT_NOTIFICATION.

 

request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
表示下載允許的網絡類型,默認在任何網絡下都允許下載。有NETWORK_MOBILE、NETWORK_WIFI、NETWORK_BLUETOOTH三種及其組合可供選擇。如果只允許wifi下載,而當前網絡為3g,則下載會等待。
request.setAllowedOverRoaming(boolean allow)移動網絡情況下是否允許漫游。

 

request.setMimeType(“application/com.trinea.download.file”);
設置下載文件的mineType。因為下載管理Ui中點擊某個已下載完成文件及下載完成點擊通知欄提示都會根據mimeType去打開文件,所以我們可以 利用這個屬性。比如上面設置了mimeType為application/com.trinea.download.file,我們可以同時設置某個 Activity的intent-filter為application/com.trinea.download.file,用于響應點擊的打開文件。

 

Java

1

2

3

4

5

6

7

<intent-filter>

    <actionandroid:name="android.intent.action.VIEW"/>

 

    <categoryandroid:name="android.intent.category.DEFAULT"/>

 

    <dataandroid:mimeType="application/com.trinea.download.file"/>

</intent-filter>

request.addRequestHeader(String header, String value)
添加請求下載的網絡鏈接的http頭,比如User-Agent,gzip壓縮等

 

3 下載進度狀態監聽及查詢

下載進度狀態監聽代碼

其中我們會監聽Uri.parse(“content://downloads/my_downloads”)。然后查詢下載狀態和進度,發送handler進行更新,handler中處理就是設置進度條和狀態等。

其中DownloadManagerPro.getBytesAndStatus的主要代碼如下,可直接引入TrineaAndroidCommon@Github(歡迎star和fork^_^)或TrineaAndroidCommon@GoogleCode作為你項目的library(如何拉取代碼及添加公共庫)

下載進度狀態查詢代碼

從上面代碼可以看出我們主要調用DownloadManager.Query()進行查詢。DownloadManager.Query為下載管理對外開放的信息查詢類,主要包括以下接口:

setFilterById(long… ids)根據下載id進行過濾
setFilterByStatus(int flags)根據下載狀態進行過濾
setOnlyIncludeVisibleInDownloadsUi(boolean value)根據是否在download ui中可見進行過濾。

 

orderBy(String column, int direction)根據列進行排序,不過目前僅支持DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP和 DownloadManager.COLUMN_TOTAL_SIZE_BYTES排序。

 

4 下載成功監聽
下載完成后,下載管理會發出DownloadManager.ACTION_DOWNLOAD_COMPLETE這個廣播,并傳遞downloadId作為參數。通過接受廣播我們可以打開對下載完成的內容進行操作。代碼如下:

下載成功監聽

 

5、響應通知欄點擊
(1) 響應下載中通知欄點擊

點擊下載中通知欄提示,系統會對下載的應用單獨發送Action為 DownloadManager.ACTION_NOTIFICATION_CLICKED廣播。intent.getData為 content://downloads/all_downloads/29669,最后一位為downloadId。
如果同時下載多個應用,intent會包含DownloadManager.EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS這個key,表示下載的的downloadId數組。這里設計到下載管理通知欄的顯示機制,會在下一篇具體介紹。

 

(2) 響應下載完成通知欄點擊
下載完后會調用下面代碼進行處理,從中我們可以發現系統會調用View action根據mimeType去查詢。所以可以利用我們在介紹的DownloadManager.Request的setMimeType函數。

openDownload源碼

 

如果界面上過多元素需要更新,且網速較快不斷的執行onChange會對頁面性能有一定影響。推薦ScheduledExecutorService定期查詢,如下:

 

Java

1

2

3

4

5

6

7

8

9

publicstaticScheduledExecutorServicescheduledExecutorService=Executors.newScheduledThreadPool(3);

Runnablecommand=newRunnable(){

 

        @Override

        publicvoidrun(){

            updateView();

        }

    };

scheduledExecutorService.scheduleAtFixedRate(command,0,3,TimeUnit.SECONDS);

表示3秒定時刷新

 

穩定

產品高可用性高并發

貼心

項目群及時溝通

專業

產品經理1v1支持

快速

MVP模式小步快跑

承諾

我們選擇聲譽

堅持

10年專注高端品質開發
  • 返回頂部
人交互MOUSE人害女生迈开腿| 亚洲AV无码一区二区一二区| 久久九九有精品国产23百花影院| 丰满人妻熟妇乱又伦精品软件| 中文字幕AV伊人AV无码AV| 午夜AV内射一区二区三区红桃视 | 日韩亚洲欧美精品综合 | 国内国精产品一二三区传媒| 爆乳一区二区三区无码| 在线麻豆精东9制片厂AV影现网| 亚洲AV无码片一区二区三区 | 我和子发生了性关系视频| 青青草视频 成人| 麻花传媒MV一二三区别在哪里| 国模GOGO中国人体私拍| 观看国产色欲色欲色欲WWW| AⅤ精品一区二区三区| 一本大道东京热无码| 亚洲成人AV无码| 西方38大但人文艺术| 少妇的丰满人妻HD高清| 人人添人人妻人人爽夜欢视AV| 男男av在线播放| 久久天天躁夜夜躁狠狠躁2014| 狠狠狠的在啪线香蕉WWW、WL| 国产精品成人AV片免费看| 处破痛哭A√18成年片免| おとまりせくす中文在线| 曰韩少妇内射免费播放| 无遮挡呻吟娇喘视频免费播放| 天堂√中文最新版在线| 日韩电影久久久被窝网| 全免费A级毛片免费看| 欧美成人精品一区二区| 蜜臀AV一区二区三区四区| 精产国品一二三产区M553麻豆| 国产一起色一起爱| 国产日产高清欧美一区| 国产九九99久久99大香伊| 公侵犯人妻一区二区三区四区| 99国产欧美久久久精品蜜桃| 中文字幕无码精品亚洲资源网久久 | 久久久精品人妻一区二区三区| 狠狠色丁香婷婷综合久久图片| 国产清纯白嫩初高生在线观看| 国产精品一区二区AV| 国产高清中文版HD中字| 国产精品成人AV电影不卡| 隔着肚兜偷揉酥乳含乳子| 波多野结衣亚洲AV手机在线| 成人国产欧美大片一区| 差差差软件大全APP推荐免费| 餐桌下他深深顶撞H| 成人免费无码大片A毛片小说| 成人免费无码AV| 夫妇联欢会回不去的夜晚樱花 | 无码被窝影院午夜看片爽爽JK| 天天狠天天透天干天干| 无码国产精品一区二区免费模式| 欧美黑人巨大XXXX黑人猛| 欧美老妇BBBWWBBBWW| 人妻少妇一级毛片内射一牛影视| 色婷婷AV一区二区三区浪潮慧瑟| 天堂AV无码AV一区二区三区| 熟妇的奶头又大又粗视频| 无码国模大尺度视频在线观看| 西西人体自慰扒开下部93| 亚洲AV综合色区无码专区桃色 | FREE性玩弄少妇HD| 啊灬啊灬啊灬快灬深高潮了亚洲乱色视频在线观看 | 丰满少妇AV无码区| 厨房掀开馊了裙子挺进电影| 国产成人无码AA精品一区 | 国产成人一区二区三区影院| 国产免费久久精品99久久| 极品少妇的粉嫩小泬视频| 久青草国产97香蕉在线视频| 女人浓毛巨茎ⅩXXOOO| 欧美人与牲禽ⅩXXX伦交| 日韩一区二区三区AV| 午夜理论片2019理论琪琪| 亚洲日韩国产一区二区蜜桃| 2023国产精品一卡2卡三卡| 宝贝张开腿嗯啊高潮了视频| 国产精品久久久久JK制服| 国产熟女一区二区三区四区五区| 国产精品∧V在线观看| 精品国品一二三产品区别在线观看 | 精品久久人妻AV中文字幕| 看AV免费毛片手机播放| 欧美性猛交一区二区三区精品| 人人澡人摸人人添| 无码人妻一区二区三区免费视频| 亚洲全部无码中文字幕| 99精产国品一二三产品| 高清欧美精品XXXXX在线看| 国色天香在线视频免费观看| 国产精品18久久久久久VR| 精品无码国产一区二区三区51安| 欧美成天堂网地址| 偷窥熟女大屁股对白视频| 亚洲欧美在线制服丝袜国产| CAOPOREN超碰最新地址| 国产精品电影久久久久电影网| 精品无码一区二区三区不卡| 前夫6天要了我25次| 小雪尝禁果又粗又大的中国地图 | 成人午夜福利视频网址| 国产欧美日韩专区发布| 久久婷婷五月综合色99啪| 日韩精品一区二区三区乱码79| 亚洲AV无码精品网站| 99久久国产综合精品五月天喷水 | 久久婷婷激情综合色综合俺也去| 人妻少妇一区二区三区| 亚洲AV无码成人网站在线观看| 亚洲爽爆东京爽爆东京爽爆av| A级黑粗大硬长爽 猛视频,| 国产精品亚洲日韩欧美色窝窝色欲| 久久亚洲中文字幕精品有坂深雪| 日韩精品卡2卡3卡4卡5| 上到少妇叫爽TUBE| 一边做一边潮喷30P| 高清粉嫩无套内谢国语播放| 国产激情久久久久影院老熟女| 蜜臀AV 国内精品久久久| 五月色综合无码一区二区三区| AV天堂亚洲国产AV| 精品无码一区二区三区不卡| 少妇又粗又大人妻无码| 制服 丝袜 人妻 专区一本| 国产欧美另类久久精品蜜芽| 人妻被按摩到潮喷中文字幕 | www.丁香五月| 精品人妻无码一区二| 水蜜桃成视频人在线看| 中文字幕人妻熟在线影院| 河南妇女毛浓浓BW| 色噜噜人体337P人体| 中文字幕一区二区三区精彩视频| 黑人女性猛交XXXXXⅩXX蘑| 日韩久久久久久中文人妻| 中日大胆裸体棚拍人体| 黑人粗大无码A∨人妻一区 | 亚洲欧美日韩国产精品一区 | 久久97超碰色中文字幕总站| 无码国产精品一区二区免费I6| CHINESE老女人老熟妇| 久久天天躁夜夜躁狠狠躁2014| 亚洲AV无码成人YELLOW| 高H闺蜜老公1V1| 欧美精品一区二区精品久久| 亚洲色精品一区二区三AI女星| 国产精品美女久久久| 日韩精品人妻AV一区二区三区| 10岁幼儿TREE小学生| 久久精品卫校国产小美女| 亚洲AV不卡一区二区三区| 国产99视频精品免费视频36| 欧亚精品一区三区免费| 永久AV狼友网站在线观看| 极品新婚夜少妇真紧| 西西人体大胆啪啪私拍色约约| 动漫人物插画动漫人物的视频| 欧美老熟妇乱子伦视频| 中文字幕乱近親相姦| 久久精品国产一区二区三| 亚洲AV激情高潮抽搐乱色| 国产SM鞭打折磨调教视频| 日本强伦姧熟睡人妻完整视频| AA丁香综合激情| 蜜桃av中文字幕在线| 一二三四免费中文在线| 精品久久久久久中文字幕| 性妇WBBBB搡BBBB嗓1| 国产精品VA无码免费| 熟女熟妇伦AV网站| 成人综合激情另类小说| 人妻AV中文字幕久久| JAPANESE国产在线看| 欧美精品成人A在线观看| 97人妻成人免费视频| 蜜臀AV一区二区三区四区| 在线观看免费视频| 久久久久亚洲AV成人片| 亚洲一区二区三区乱码AⅤ蜜桃| 精品无码久久久久久久久| 亚洲男人第一无码AV网站| 精品粉嫩BBWBBZBBW| 亚洲精品卡一卡2卡3卡4卡| 精品国产乱码久久久久久下载 | 无码天堂亚洲国产AV| 国产激情З∠视频一区二区 | 337P粉嫩大胆噜噜噜| 免费网站看AV片| 中文乱码人妻系列一区二区| 免费国产VA在线观看中文字| 999久久久精品国产消防器材| 欧美大屁股XXXⅩOOOO| TOUGHTESTED硬汉系列|