检测不完整的下载

时间:2014-12-14 01:35:11

标签: android

我正在使用DownloadManager从我的应用程序中的服务器下载一些大文件,如果下载没有完成,我需要能够提示用户再次下载文件。我有一个名为FileData的对象,其中包含有关该文件的信息,例如应该下载的URL以及文件的大小。

我现在采用的方法是,当我重新启动应用程序时,我致电:

final File fsFile = new File(getDataFilePath(file));
if (fsFile.exists() && fsFile.length() != file.size) { // file is a variable that refers to a on object that has file information
    fsFile.delete();
}

但是,这种方法似乎失败了,因为整个文件是在初始下载开始时分配的,因此文件大小不是确定文件下载是否完成的准确方法。

我想到的其他方法:

  1. 使用STATUS_FAILED查询DownloadManager以进行下载。这会产生额外的开销,即检查给定文件是否存在后续的STATUS_SUCCESSFUL(因为我认为DownloadManager保留了下载历史很长一段时间),所以它看起来并不是最直接的选项。

  2. 使用MD5校验和检查是否已下载完整文件。这样做的缺点是必须发出网络请求以确定文件下载是否失败。

  3. 目前,我的所有文件下载都是顺序的,因此我可以在用户首选项中存储正在下载的文件的名称和该下载的请求ID,然后检查下载是否完成该应用重启。这似乎是最干净,最简单的方法。

  4. 除非我有任何其他想法,我会选择3,但我想知道是否有一个简单的方法可以解决这个问题。任何建议都会有所帮助!

0 个答案:

没有答案