pull/2037/head
kunfei 2 years ago
parent 98046a4313
commit ad5f454362
  1. 11
      app/src/main/java/io/legado/app/model/CacheBook.kt
  2. 10
      app/src/main/java/io/legado/app/service/CacheBookService.kt
  3. 10
      app/src/main/java/io/legado/app/ui/main/MainViewModel.kt

@ -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)
}
}
}

Loading…
Cancel
Save