DownloadManager - Part2

作者: 小菜鸟程序媛 | 来源:发表于2016-12-21 16:42 被阅读180次

    原文地址:https://blog.stylingandroid.com/downloadmanager-part-2/

    上一篇文章我们看了一下如何使用DownloadManager来执行下载的操作,还有更多的东西需要我们去发觉,所以在这篇文章中我们将去看一下。

    当我们下载的时候,会发现出现了一个Notification,我们可以看到下载的进度和下载的文件名以及下载所预计的时间。


    default_notification.png

    我们可以控制通知,如果我们想要在显示通知时进行更改的话,我们可以在通过DownloadManager.Request对象上调用setNotificationVisibility()(对于API11或者更高版本,或者API9可以调用setShowRunningNotification()),可以完全取消通知,但是必须拥有DOWNLOAD_WITHOUT_NOTIFICATION权限才能这么做。

    但是也可以使用DownloadManager.Request中的setDescription()setTitle()方法来控制通知中显示的内容。setTitle允许更改文件显示的名字,setDescription允许我们修改剩余下载时间所显示的内容。

     void download(Uri uri) {
            if (!isDownloading()) {
                register();
                DownloadManager.Request request = new DownloadManager.Request(uri);
                request.setTitle("My hovercraft is full of eels");
                request.setDescription("I am no longer infected");
                downloadId = downloadManager.enqueue(request);
            }
        }
    

    尽量避免修改描述字段,因为剩余下载时间对于用户来说还是非常有用的,但是我们运行之后,可以看到如何更改通知。


    图片图片

    通常服务器可能需要包括特定的Http头,例如会话ID,这个可以轻松的通过调用DownloadManager.Request的addRequestHeader()来实现。

    如果下载量特别大的话,那么我们需要考虑下载对用户的手机流量的影响,在DownloadManager.Request上有一些方法可以限制用户下载的网络,以免对用户造成金钱上的浪费,默认的设置是没有限制的,所以加这个限制是非常重要的,漫游时下载可以使用setAllowedOverRoaming()来限制,特定类型的网络可以使用setAllowedNetworkTypes来限制(在Api16以上,我们可以使用setAllowedOverMetered).

    我们还可以控制下载后的内容对操作系统可见,在我们将请求加入队列之前,调用allowScanningByMediaScanner()将允许系统媒体扫描可见内容,例如,如果我们在下载图片时设置这一点,那么当图片下载完之后,图片扫描器将会扫描到该图片,图片也将会出现在图片库中。

    我们控制内容是否可见的另外一种方法DownloadManager.RequestsetVisibleInDownloadsUi(),这将控制所下载的内容及其状态是否在系统下载应用程序中可见。

    最后,我们可以控制内容的下载位置,默认情况下他将被下载到默认系统区域,但是缺点是,他可以被系统删除,如果系统需要释放内存空间的话,为了避免这种潜在的风险,可以调用setDestinationInExternalFilesDir(),他会将下载内容存储到应用程序的私有存储区中的外部存储,这个对媒体扫描器通常是不可见的,如果你希望对媒体扫描器可见的话,那么需要调用setDestinationInExternalPublicDir(),这将会把下载内容保存到外部存储区域,但是保存在外部公共存储会影响与其他应用程序共享的能力,更多的将会在下一篇文章中描述。

    我们可以在每次下载的基础上控制所有这些,单也有一些一般的限制,我们可以应用于所有的下载,但是这个将会在下一篇文章中描述。

    相关文章

      网友评论

        本文标题:DownloadManager - Part2

        本文链接:https://www.haomeiwen.com/subject/tmptvttx.html