3

我正在尝试使用ContentProvider使用此处提到的DownloadManager将单个巨大的 zip 文件下载到内部存储(请参阅选项 2):

创建一个可供 DownloadManager 写入的 ContentProvider,并为其提供与此 ContentProvider 对应的 URI。

有人可以为我提供一个如何实现这一目标的例子吗?这是想要达到的目标吗?

或者这样做完全是个坏主意?

4

1 回答 1

4

您发布的答案提到了几个场景:

  1. 如果您希望将此文件下载到哪里,如果您使用下载管理器,它肯定会被视为公共下载,其他应用程序可以访问它。
  2. 如果您希望它成为特定于应用程序上下文的内部存储,请通过任何可能的方法下载它,因为海报建议使用 ContentProvider。

现在进一步补充,无论您选择哪种方法,下载数据的代码都将保持不变。也许我会建议一个更合适的解决方案,因为 ContentProvider 通常与处理数据库有关,所以放弃它,而不是

  1. 创建一个服务,这将在后台运行
  2. 通过此服务生成一个用于下载数据的线程,无论您使用哪种方法,这都非常重要,但如果您尝试在主线程上挂钩任何长时间的网络操作,android 将关闭您的应用程序,说明主线程上的网络或 ANR
  3. 下载完成后,您可以停止服务,然后从那里做任何您想做的事情。

下载文件的精彩代码以及电源管理器等的使用可以在这里找到:

使用 Android 下载文件,并在 ProgressDialog 中显示进度

于 2013-12-18T10:27:17.083 回答