lingochamp / FileDownloader

Multitask、MultiThread(MultiConnection)、Breakpoint-resume、High-concurrency、Simple to use、Single/NotSingle-process
Apache License 2.0
11.04k stars 2.2k forks source link

下载完成状态更新问题! #1106

Open androidChao opened 6 years ago

androidChao commented 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); 以避免上述问题?

rantianhua commented 6 years ago

你的意思是,已经下载完成的任务,再重新打开时,状态变成了暂停?而不是已完成?

androidChao commented 6 years ago

是的 调试发现由于更新数据库时间设置2000毫秒,没有删除数据库记录,导致的状态错误

rantianhua commented 6 years ago

@androidChao 可以提供一份详细的 FileDownloader 的日志吗?

android-huolailai commented 4 years ago

我也遇到这个问题了,下载完成后未更新数据库,下载再进来还是暂停时的进度