This commit is contained in:
kunfei
2022-07-06 21:18:46 +08:00
parent 98046a4313
commit ad5f454362
3 changed files with 19 additions and 12 deletions
@@ -202,25 +202,25 @@ object CacheBook {
* 从待下载列表内取第一条下载
*/
@Synchronized
fun download(scope: CoroutineScope, context: CoroutineContext): Boolean {
fun download(scope: CoroutineScope, context: CoroutineContext) {
val chapterIndex = waitDownloadSet.firstOrNull()
if (chapterIndex == null) {
if (onDownloadSet.isEmpty()) {
cacheBookMap.remove(book.bookUrl)
}
return false
return
}
if (onDownloadSet.contains(chapterIndex)) {
waitDownloadSet.remove(chapterIndex)
return download(scope, context)
return
}
val chapter = appDb.bookChapterDao.getChapter(book.bookUrl, chapterIndex) ?: let {
waitDownloadSet.remove(chapterIndex)
return download(scope, context)
return
}
if (BookHelp.hasContent(book, chapter)) {
waitDownloadSet.remove(chapterIndex)
return download(scope, context)
return
}
waitDownloadSet.remove(chapterIndex)
onDownloadSet.add(chapterIndex)
@@ -243,7 +243,6 @@ object CacheBook {
}.onFinally {
onFinally()
}
return true
}
@Synchronized
@@ -107,10 +107,14 @@ class CacheBookService : BaseService() {
return@launch
}
CacheBook.cacheBookMap.forEach {
while (CacheBook.onDownloadCount > threadCount) {
delay(100)
val cacheBookModel = it.value
while (cacheBookModel.waitCount > 0) {
if (CacheBook.onDownloadCount < threadCount) {
cacheBookModel.download(this, cachePool)
} else {
delay(100)
}
}
it.value.download(this, cachePool)
}
}
}
@@ -195,10 +195,14 @@ class MainViewModel(application: Application) : BaseViewModel(application) {
return@launch
}
CacheBook.cacheBookMap.forEach {
while (CacheBook.onDownloadCount > threadCount) {
delay(100)
val cacheBookModel = it.value
while (cacheBookModel.waitCount > 0) {
if (CacheBook.onDownloadCount < threadCount) {
cacheBookModel.download(this, upTocPool)
} else {
delay(100)
}
}
it.value.download(this, upTocPool)
}
}
}