【问题标题】:The best way to download a big file in android?在android中下载大文件的最佳方法是什么?
【发布时间】:2013-04-02 12:23:16
【问题描述】:

我需要在我的应用程序上下载一个大文件(几乎 2gb),我想知道这样做的最佳方法是什么以及一些可以帮助我的库。 首先,我查看了Android Asynchronous Http Library,但没有找到显示如何发布进度或开始、暂停下载的示例。然后我不知道我应该使用这个库还是只使用标准的 http commons。 另一个问题是,我应该使用service 来下载我的文件吗?

你们能不能给个提示,怎么做?

【问题讨论】:

    标签: android


    【解决方案1】:

    我看到你得到了一堆答案,但没有一个是从整体的角度真正回答的。

    要下载 2k 或 2gb 文件,实际代码是相同的,使用某种类型的连接处理程序以及某种类型的输入流和输出流,并且通常使用缓冲输入流包装输入流。为此,您可以在网络上找到无数的 java 示例。

    考虑到 Android 平台,这里的技巧是,因为这是一个冗长的操作,所以您根本不应该在 Activity 生命周期内执行它。

    说你有两种选择:

    • 正如您建议的那样,您可以创建一个服务,我建议您使用IntentService 因为它似乎非常适合这种情况。 IntentService 自动跨越一个新线程,通过您将 URL 作为字符串传递的意图并让服务使用流等进行下载。

    • 另一种可能效果很好但我从未亲自使用过的方法是使用自 Gingerbread 以来可用的DownloadManager。拨打getSystemService(Context.DOWNLOAD_SERVICE)和拨打dwManag.enqueue(dwRequest);应该不难

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      如果您不针对前姜饼设备,我会使用DownloadManager 作为您链接到的答案中的第三个选项的建议。它负责下载文件,在通知栏中显示进度,以便用户即使在您的应用程序进入后台后也可以看到正在发生的事情,而您不必太担心用户离开时会发生什么进入另一个应用程序,android 决定终止您的应用程序以释放内存。此外,它还具有“仅通过 wifi 下载文件”之类的功能,至少某些 android 版本具有。

      【讨论】:

        【解决方案3】:

        我建议你使用 adm 下载管理器。即使没有网络,下载也不会失败,速度也最好。

        【讨论】:

        • 下载管理器不支持带有 HTTP 重定向状态代码的响应(这正是我的情况)。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-29
        • 2023-03-15
        • 1970-01-01
        • 2012-06-10
        • 1970-01-01
        • 1970-01-01
        • 2019-11-12
        相关资源
        最近更新 更多