Closed xiaojidonggong closed 8 years ago
看了下demo效果,的确是这样,准备看看如何实现
@LiuJQ 目前工程里,我根据下载字节数和当前字节数判断的,如果相当则说明下载完了。这种方式肯定是不好的,因为如果多个线程下载,那么一个任务会在数据库里有多份,这样的话,要知道每一个下载是否完成。 为了简单,我只有弄成单线程断点下载。 目前暂时这种方案去解决的,我觉得更好的方案是表里增加一个字段来标识当前下载的状态,另外不建议使用广播来通知,不如改成EventBus或者回调方式去告知前台,另外里面还有一些bug,总体来说能够满足需求,用户量级大的话,不知道是否有其他Bug
@tikkat3 我用了愚蠢的方法,直接判断文件是否已经存在。下载完成时会删除下载信息,所以一开始判断是否有下载信息,没有的话要么就是下载完了,要么就是还没下载,简单暴力。代码刚写完,还没系统测试,不知道这样做会不会引发其他问题。
DownloadInfo downloadInfo = DownloadManager.getInstance().getDownloadProgress(info.getUrl());
if (downloadInfo != null) {
info.setProgress(downloadInfo.getProgress());
info.setDownloadPerSize(getDownloadPerSize(downloadInfo.getFinished(), downloadInfo.getLength()));
info.setStatus(AppInfo.STATUS_PAUSED);
} else {
if (new File(info.getFilePath()).exists()) {
info.setStatus(AppInfo.STATUS_COMPLETE);
} else {
info.setStatus(AppInfo.STATUS_NOT_DOWNLOAD);
}
}
下载完成后,会回调onCompleted(),请自行记录。
下载后的文件已经保存到SDCard里面了,有什么办法进入下载页面的时候,就知道该任务已经完成了?我发现任务已经有了下载,我下次进的时候,状态也正确,提示已经下载的进度也正确