gpt4 book ai didi

使用 DownloadManger 的 Android 下载队列

转载 作者:太空宇宙 更新时间:2023-11-03 12:06:56 25 4
gpt4 key购买 nike

我正在使用 DownloadManager 在 android 中下载我的文件,它很棒,因为它可以处理所有事情(连接丢失、重试等)。问题是我希望我的文件一个接一个地下载到队列中,直到我知道 DownloadManager 不提供此功能。因此多次调用 DownloadManager.enqueue(...) 会导致同时下载所有文件。我怎样才能解决这个问题?

我不能只是在我的 Activity 中排队并将下载一个一个地发送到 DownloadManger,因为 Activity 可能随时被破坏!

IntentService 在这里也不起作用!!即使它一个一个地处理请求,调用 DownloadManager.enqueue() 也会运行得如此之快,然后下一个调用结果将再次并发下载!

我的第三个选择是使用 LocalService 获取请求并在先前开始的下载完成时调用 DownloadManager.enqueue() 但我应该怎么做呢?我的服务需要从我的 Activity 中获取请求,即使它正在运行! (所以我不能只是将数据放在 Intent 中)。为了实现通信,我需要将其设为绑定(bind)服务,正如文档所述,当没有绑定(bind)到它时它会销毁!

bound service runs only as long as another application component is bound to it. 
Multiple components can bind to the service at once, but when all
of them unbind, the service is destroyed.

所以当我的 Activity 关闭时,我丢失了队列中的下载。我对吗?

最后一个选项是在单独的进程中使用服务,因为即使我的第三个选项有效,只要应用程序未关闭,它也只会下​​载文件。这个选项似乎很可怕,因为我必须处理进程间通信,但我不知道那是什么!!

那我错过了什么吗?!它不应该更容易解决我的问题吗?

我刚刚下载的文件是队列!我也不希望我的服务在没有可下载的情况下无限期地运行。

最佳答案

非常简单:

1) 创建一个数据库并将您的 url 插入其中。

2) 为 list 中 downloadmanager 的下载完成操作创建接收器。

3) 收到下载完成后,从您的数据库中读取一行并开始新的下载(排队)。

快乐编码:-)

关于使用 DownloadManger 的 Android 下载队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27590160/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com