Open androidChao opened 6 years ago
RemitDatabase @Override public void updateCompleted(int id, long total) { this.cachedDatabase.updateCompleted(id, total); if (isNoNeedUpdateToRealDB(id)) { handler.removeMessages(id); if (handlingId.get() == id) { parkThread = Thread.currentThread(); handler.sendEmptyMessage(WHAT_CLEAN_LOCK); LockSupport.park(); this.realDatabase.updateCompleted(id, total); } } else { this.realDatabase.updateCompleted(id, total); } freeToDBIdList.remove((Integer) id); } 如下载接近完成(暂停状态),只要下载速度稍快,下载完成状态会永远得不到更新(更新数据库时间设置稍大2000ms),重新打开APP会变成原来的暂停状态! 因完成状态的特殊性是否考虑在该方法中直接调用 this.realDatabase.updateCompleted(id, total); 以避免上述问题?
你的意思是,已经下载完成的任务,再重新打开时,状态变成了暂停?而不是已完成?
是的 调试发现由于更新数据库时间设置2000毫秒,没有删除数据库记录,导致的状态错误
@androidChao 可以提供一份详细的 FileDownloader 的日志吗?
我也遇到这个问题了,下载完成后未更新数据库,下载再进来还是暂停时的进度
RemitDatabase
@Override public void updateCompleted(int id, long total) { this.cachedDatabase.updateCompleted(id, total); if (isNoNeedUpdateToRealDB(id)) { handler.removeMessages(id); if (handlingId.get() == id) { parkThread = Thread.currentThread(); handler.sendEmptyMessage(WHAT_CLEAN_LOCK); LockSupport.park(); this.realDatabase.updateCompleted(id, total); } } else { this.realDatabase.updateCompleted(id, total); } freeToDBIdList.remove((Integer) id); } 如下载接近完成(暂停状态),只要下载速度稍快,下载完成状态会永远得不到更新(更新数据库时间设置稍大2000ms),重新打开APP会变成原来的暂停状态! 因完成状态的特殊性是否考虑在该方法中直接调用 this.realDatabase.updateCompleted(id, total); 以避免上述问题?