昨天,美国大选的结果出炉,特朗普出人意料地逆袭了希拉里,成为了美国的第45位总统。由于全球各界人士都认为特朗普将会是个不靠谱的总统,人们的避险情绪增加,昨天全球股市及美元指数大跌,黄金暴涨。而另一方面,希拉里在08年竞选总统候选人的时候就被奥巴马打败,这次8年之后卷土重来又被特朗普打败,已经年近70岁的希拉里总统梦终归破碎,美国的第一位女总统不知何年何月才会出现了。
本篇是
xingfeng_coder
的第二篇投稿,总结了使用DownloadManger的正确姿势,希望对大家有所帮助。
xingfeng_coder
的博客地址:
http://blog.csdn.net/qq_19431333
DownloadManager
是处理长时间HTTP下载的系统服务。客户端可以将指定内容下载到某一特定的目录。
DownloadManager
会在后台进行下载工作,自己会处理下载失败、网络变换或系统重启等问题。可以通过下面的方法获取到
DownloadManager
对象,代码如下:
DownloadManager mDownloadManager = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
一般使用 DownloadManager 时,应用需要注册一个可以接受
ACTION_NOTIFICATION_CLICKED
的广播接收器,用于恰当处理用户点击通知栏中的下载界面时的情形。另外,当使用 DownloadManager 时应用需要应具有
INTERNET权限
。
DownloadManager 一般用于软件更新、视频等的的下载任务,在通知栏中可以看到一个下载进度条,这种情形一般都是通过 DownloadManager 实现的。使用步骤由如下几步:
初始化DownloadManager.Request对象
DownloadManager.Request类
包含了一个下载请求的所有必要信息。构造方法中只需要传入下载的URI,默认的文件存储地址是一个共享卷,当系统需要回收空间时可以能会删除下载文件。如果需要避免这种情况,可以使用
setDestinationUrl(Uri)
设置外部存储路径。
Request
可以设置限制使用的网络,默认是移动网络和WIFI网络均可以,如果想只设置WIFI网络,可以使用
setAllowedNetWorkTypes
进行设置,代码如下:
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI);
Request可以设置是否将下载进度显示在通知栏中,可以通过
setNotificationVisibility(int visibility)
进行设置。默认的,只会在下载进行中时显示,在下载完成后就不显示了。可以设置如下值:
-
VISIBILITY_HIDDEN
下载UI不会显示,也不会显示在通知中,如果设置该值,需要声明
Android.permission.DOWNLOAD_WITHOUT_NOTIFICATION
-
VISIBILITY_VISIBLE
当处于下载中状态时,可以在通知栏中显示;当下载完成后,通知栏中不显示
-
VISIBILITY_VISIBLE_NOTIFY_COMPLETED
当处于下载中状态和下载完成时状态,均在通知栏中显示
-
VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION
只在下载完成时显示在通知栏中
Request 还有一些设置HTTP请求的方法,比如 添加请求头addRequestHeader、设置MIME类型setMimeType等方法。
下面是一段创建Request的示例代码:
上面的代码中根据 下载的URL 转成 URI 之后再创建 Request对象,然后设置只允许使用WIFI网络,当任务在下载中时会在通知栏中显示进度,setTitle 是设置通知的标题。
发送Request对象