diff --git a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceViewModel.kt b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceViewModel.kt index 4c093a516..8f069375e 100644 --- a/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/changesource/ChangeBookSourceViewModel.kt @@ -64,6 +64,7 @@ open class ChangeBookSourceViewModel(application: Application) : BaseViewModel(a private var searchBookList = arrayListOf() private val searchBooks = Collections.synchronizedList(arrayListOf()) private val tocMap = ConcurrentHashMap>() + private var tocMapChapterCount = 0 private val contentProcessor by lazy { ContentProcessor.get(oldBook!!) } @@ -176,6 +177,9 @@ open class ChangeBookSourceViewModel(application: Application) : BaseViewModel(a } searchCallback?.upAdapter() bookSourceParts.clear() + tocMap.clear() + bookMap.clear() + tocMapChapterCount = 0 val searchGroup = AppConfig.searchGroup if (searchGroup.isBlank()) { bookSourceParts.addAll(appDb.bookSourceDao.allEnabledPart) @@ -197,6 +201,9 @@ open class ChangeBookSourceViewModel(application: Application) : BaseViewModel(a execute { stopSearch() bookSourceParts.clear() + tocMap.clear() + bookMap.clear() + tocMapChapterCount = 0 bookSourceParts.add(appDb.bookSourceDao.getBookSourcePart(origin)!!) searchBooks.removeIf { it.origin == origin } initSearchPool() @@ -269,7 +276,10 @@ open class ChangeBookSourceViewModel(application: Application) : BaseViewModel(a for (chapter in chapters) { chapter.internString() } - tocMap[book.bookUrl] = chapters + if (tocMapChapterCount < 30000) { + tocMapChapterCount += chapters.size + tocMap[book.bookUrl] = chapters + } bookMap[book.bookUrl] = book book.releaseHtmlData() if (AppConfig.changeSourceLoadWordCount) {