pull/1352/head
gedoor 4 years ago
parent c4e51aaf9a
commit a5c6e6f7dc
  1. 19
      app/src/main/java/io/legado/app/model/CacheBook.kt

@ -19,14 +19,12 @@ import kotlinx.coroutines.delay
import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.ConcurrentHashMap
import kotlin.coroutines.CoroutineContext import kotlin.coroutines.CoroutineContext
class CacheBook(var bookSource: BookSource, var book: Book) { object CacheBook {
companion object { val cacheBookMap = ConcurrentHashMap<String, CacheBookModel>()
val cacheBookMap = ConcurrentHashMap<String, CacheBook>()
@Synchronized @Synchronized
fun getOrCreate(bookUrl: String): CacheBook? { fun getOrCreate(bookUrl: String): CacheBookModel? {
val book = appDb.bookDao.getBook(bookUrl) ?: return null val book = appDb.bookDao.getBook(bookUrl) ?: return null
val bookSource = appDb.bookSourceDao.getBookSource(book.origin) ?: return null val bookSource = appDb.bookSourceDao.getBookSource(book.origin) ?: return null
var cacheBook = cacheBookMap[bookUrl] var cacheBook = cacheBookMap[bookUrl]
@ -36,13 +34,13 @@ class CacheBook(var bookSource: BookSource, var book: Book) {
cacheBook.book = book cacheBook.book = book
return cacheBook return cacheBook
} }
cacheBook = CacheBook(bookSource, book) cacheBook = CacheBookModel(bookSource, book)
cacheBookMap[bookUrl] = cacheBook cacheBookMap[bookUrl] = cacheBook
return cacheBook return cacheBook
} }
@Synchronized @Synchronized
fun getOrCreate(bookSource: BookSource, book: Book): CacheBook { fun getOrCreate(bookSource: BookSource, book: Book): CacheBookModel {
var cacheBook = cacheBookMap[book.bookUrl] var cacheBook = cacheBookMap[book.bookUrl]
if (cacheBook != null) { if (cacheBook != null) {
//存在时更新,书源可能会变化,必须更新 //存在时更新,书源可能会变化,必须更新
@ -50,7 +48,7 @@ class CacheBook(var bookSource: BookSource, var book: Book) {
cacheBook.book = book cacheBook.book = book
return cacheBook return cacheBook
} }
cacheBook = CacheBook(bookSource, book) cacheBook = CacheBookModel(bookSource, book)
cacheBookMap[book.bookUrl] = cacheBook cacheBookMap[book.bookUrl] = cacheBook
return cacheBook return cacheBook
} }
@ -126,7 +124,8 @@ class CacheBook(var bookSource: BookSource, var book: Book) {
} }
return count return count
} }
}
class CacheBookModel(var bookSource: BookSource, var book: Book) {
private val waitDownloadSet = hashSetOf<Int>() private val waitDownloadSet = hashSetOf<Int>()
private val onDownloadSet = hashSetOf<Int>() private val onDownloadSet = hashSetOf<Int>()
@ -285,3 +284,5 @@ class CacheBook(var bookSource: BookSource, var book: Book) {
} }
} }
}
Loading…
Cancel
Save