mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
增加漫画缓存自动清除功能 (#4645)
This commit is contained in:
@@ -93,6 +93,7 @@ object PreferKey {
|
||||
const val cronet = "Cronet"
|
||||
const val antiAlias = "antiAlias"
|
||||
const val bitmapCacheSize = "bitmapCacheSize"
|
||||
const val bitmapRetainNum = "bitmapRetainNum"
|
||||
const val preDownloadNum = "preDownloadNum"
|
||||
const val autoRefresh = "auto_refresh"
|
||||
const val defaultToRead = "defaultToRead"
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.os.ParcelFileDescriptor
|
||||
import androidx.documentfile.provider.DocumentFile
|
||||
import io.legado.app.constant.AppLog
|
||||
import io.legado.app.constant.AppPattern
|
||||
import io.legado.app.constant.BookType
|
||||
import io.legado.app.constant.EventBus
|
||||
import io.legado.app.data.appDb
|
||||
import io.legado.app.data.entities.Book
|
||||
@@ -96,6 +97,7 @@ object BookHelp {
|
||||
val bookFolderNames = hashSetOf<String>()
|
||||
val originNames = hashSetOf<String>()
|
||||
appDb.bookDao.all.forEach {
|
||||
clearComicCache(it)
|
||||
bookFolderNames.add(it.getFolderName())
|
||||
if (it.isEpub) originNames.add(it.originName)
|
||||
}
|
||||
@@ -119,6 +121,48 @@ object BookHelp {
|
||||
}
|
||||
}
|
||||
|
||||
//清除已经看过的漫画数据
|
||||
private fun clearComicCache(book: Book) {
|
||||
//只处理漫画
|
||||
if (book.type == BookType.image) {
|
||||
//为0的时候,不清除已缓存数据
|
||||
if (AppConfig.bitmapRetainNum == 0) {
|
||||
return
|
||||
}
|
||||
//向前保留设定数量,向后保留预下载数量
|
||||
val startIndex = book.durChapterIndex - AppConfig.bitmapRetainNum
|
||||
val endIndex = book.durChapterIndex + AppConfig.preDownloadNum
|
||||
val chapterList = appDb.bookChapterDao.getChapterList(
|
||||
book.bookUrl,
|
||||
startIndex,
|
||||
endIndex
|
||||
)
|
||||
val imgNames = hashSetOf<String>()
|
||||
//获取需要保留章节的图片信息
|
||||
chapterList.forEach {
|
||||
val content = getContent(book, it)
|
||||
if (content != null) {
|
||||
val matcher = AppPattern.imgPattern.matcher(content)
|
||||
while (matcher.find()) {
|
||||
val src = matcher.group(1) ?: continue
|
||||
val mSrc = NetworkUtils.getAbsoluteURL(it.url, src)
|
||||
imgNames.add("${MD5Utils.md5Encode16(mSrc)}.${getImageSuffix(mSrc)}")
|
||||
}
|
||||
}
|
||||
}
|
||||
downloadDir.getFile(
|
||||
cacheFolderName,
|
||||
book.getFolderName(),
|
||||
cacheImageFolderName
|
||||
).listFiles()?.forEach { imgFile ->
|
||||
if (!imgNames.contains(imgFile.name)){
|
||||
imgFile.delete()
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun saveContent(
|
||||
bookSource: BookSource,
|
||||
book: Book,
|
||||
|
||||
@@ -554,6 +554,12 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
appCtx.putPrefInt(PreferKey.bitmapCacheSize, value)
|
||||
}
|
||||
|
||||
var bitmapRetainNum: Int
|
||||
get() = appCtx.getPrefInt(PreferKey.bitmapRetainNum, 0)
|
||||
set(value) {
|
||||
appCtx.putPrefInt(PreferKey.bitmapRetainNum, value)
|
||||
}
|
||||
|
||||
var showReadTitleBarAddition: Boolean
|
||||
get() = appCtx.getPrefBoolean(PreferKey.showReadTitleAddition, true)
|
||||
set(value) {
|
||||
|
||||
@@ -68,6 +68,7 @@ class OtherConfigFragment : PreferenceFragment(),
|
||||
}
|
||||
upPreferenceSummary(PreferKey.checkSource, CheckSource.summary)
|
||||
upPreferenceSummary(PreferKey.bitmapCacheSize, AppConfig.bitmapCacheSize.toString())
|
||||
upPreferenceSummary(PreferKey.bitmapRetainNum, AppConfig.bitmapRetainNum.toString())
|
||||
upPreferenceSummary(PreferKey.sourceEditMaxLine, AppConfig.sourceEditMaxLine.toString())
|
||||
}
|
||||
|
||||
@@ -132,6 +133,14 @@ class OtherConfigFragment : PreferenceFragment(),
|
||||
ImageProvider.bitmapLruCache.resize(ImageProvider.cacheSize)
|
||||
}
|
||||
}
|
||||
PreferKey.bitmapRetainNum -> NumberPickerDialog(requireContext())
|
||||
.setTitle(getString(R.string.bitmap_retain_number))
|
||||
.setMaxValue(999)
|
||||
.setMinValue(0)
|
||||
.setValue(AppConfig.bitmapRetainNum)
|
||||
.show {
|
||||
AppConfig.bitmapRetainNum = it
|
||||
}
|
||||
|
||||
PreferKey.sourceEditMaxLine -> {
|
||||
NumberPickerDialog(requireContext())
|
||||
@@ -203,6 +212,10 @@ class OtherConfigFragment : PreferenceFragment(),
|
||||
upPreferenceSummary(key, AppConfig.bitmapCacheSize.toString())
|
||||
}
|
||||
|
||||
PreferKey.bitmapRetainNum -> {
|
||||
upPreferenceSummary(key, AppConfig.bitmapRetainNum.toString())
|
||||
}
|
||||
|
||||
PreferKey.sourceEditMaxLine -> {
|
||||
upPreferenceSummary(key, AppConfig.sourceEditMaxLine.toString())
|
||||
}
|
||||
@@ -219,6 +232,8 @@ class OtherConfigFragment : PreferenceFragment(),
|
||||
PreferKey.webPort -> preference.summary = getString(R.string.web_port_summary, value)
|
||||
PreferKey.bitmapCacheSize -> preference.summary =
|
||||
getString(R.string.bitmap_cache_size_summary, value)
|
||||
PreferKey.bitmapRetainNum -> preference.summary =
|
||||
getString(R.string.bitmap_retain_number_summary, value)
|
||||
|
||||
PreferKey.sourceEditMaxLine -> preference.summary =
|
||||
getString(R.string.source_edit_max_line_summary, value)
|
||||
|
||||
@@ -1003,6 +1003,8 @@
|
||||
<string name="add_remote_book">RemoteBook</string>
|
||||
<string name="bitmap_cache_size_summary">Current cache max size %1$s MB</string>
|
||||
<string name="bitmap_cache_size">bitmap cache size</string>
|
||||
<string name="bitmap_retain_number_summary">Keep the number of chapters read %s</string>
|
||||
<string name="bitmap_retain_number">Number of manga reservations</string>
|
||||
<string name="export_pics_file">Export Picture Files</string>
|
||||
<!-- string end -->
|
||||
<string name="error_decode_bitmap">Fail to decode bitmap</string>
|
||||
|
||||
@@ -1006,6 +1006,8 @@
|
||||
<string name="add_remote_book">RemoteBook</string>
|
||||
<string name="bitmap_cache_size_summary">Current cache max size %1$s MB</string>
|
||||
<string name="bitmap_cache_size">bitmap cache size</string>
|
||||
<string name="bitmap_retain_number_summary">保留已读章节数量 %s</string>
|
||||
<string name="bitmap_retain_number">漫画保留数量</string>
|
||||
<string name="export_pics_file">Export Picture Files</string>
|
||||
<!-- string end -->
|
||||
<string name="error_decode_bitmap">Fail to decode bitmap</string>
|
||||
|
||||
@@ -1006,6 +1006,8 @@
|
||||
<string name="add_remote_book">RemoteBook</string>
|
||||
<string name="bitmap_cache_size_summary">Current cache max size %1$s MB</string>
|
||||
<string name="bitmap_cache_size">bitmap cache size</string>
|
||||
<string name="bitmap_retain_number_summary">Keep the number of chapters read %s</string>
|
||||
<string name="bitmap_retain_number">Number of manga reservations</string>
|
||||
<string name="export_pics_file">Export Picture Files</string>
|
||||
<!-- string end -->
|
||||
<string name="error_decode_bitmap">Fail to decode bitmap</string>
|
||||
|
||||
@@ -1003,6 +1003,8 @@ Còn </string>
|
||||
<string name="add_remote_book">Sách từ xa</string>
|
||||
<string name="bitmap_cache_size_summary">Kích thước tối đa của bộ đệm hiện tại %1$s MB</string>
|
||||
<string name="bitmap_cache_size">kích thước bộ đệm bitmap</string>
|
||||
<string name="bitmap_retain_number_summary">Giữ số chương đã đọc %s</string>
|
||||
<string name="bitmap_retain_number">Số lượng đặt chỗ manga</string>
|
||||
<string name="export_pics_file">Xuất tập tin ảnh</string>
|
||||
<!-- string end -->
|
||||
<string name="error_decode_bitmap">Không thể giải mã bitmap</string>
|
||||
|
||||
@@ -1003,6 +1003,8 @@
|
||||
<string name="add_remote_book">远程书籍</string>
|
||||
<string name="bitmap_cache_size_summary">当前最大缓存 %1$s MB</string>
|
||||
<string name="bitmap_cache_size">图片绘制缓存</string>
|
||||
<string name="bitmap_retain_number_summary">保留已讀章節數量 %s</string>
|
||||
<string name="bitmap_retain_number">漫畫保留數量</string>
|
||||
<string name="export_pics_file">TXT导出图片</string>
|
||||
<!-- string end -->
|
||||
<string name="error_decode_bitmap">图片解码失败</string>
|
||||
|
||||
@@ -1005,6 +1005,8 @@
|
||||
<string name="add_remote_book">远程書籍</string>
|
||||
<string name="bitmap_cache_size_summary">目前最大快取 %1$s MB</string>
|
||||
<string name="bitmap_cache_size">圖片繪製快取</string>
|
||||
<string name="bitmap_retain_number_summary">保留已讀章節數量 %s</string>
|
||||
<string name="bitmap_retain_number">漫畫保留數量</string>
|
||||
<string name="export_pics_file">TXT匯出圖片</string>
|
||||
<!-- string end -->
|
||||
<string name="error_decode_bitmap">圖片解碼失敗</string>
|
||||
|
||||
@@ -1006,6 +1006,8 @@
|
||||
<string name="add_remote_book">远程书籍</string>
|
||||
<string name="bitmap_cache_size_summary">当前最大缓存 %1$s MB</string>
|
||||
<string name="bitmap_cache_size">图片绘制缓存</string>
|
||||
<string name="bitmap_retain_number_summary">保留已读章节数量 %s</string>
|
||||
<string name="bitmap_retain_number">漫画保留数量</string>
|
||||
<string name="export_pics_file">TXT 导出图片</string>
|
||||
<!-- string end -->
|
||||
<string name="error_decode_bitmap">图片解码失败</string>
|
||||
|
||||
@@ -1009,6 +1009,8 @@
|
||||
<string name="add_remote_book">RemoteBook</string>
|
||||
<string name="bitmap_cache_size_summary">Current cache max size %1$s MB</string>
|
||||
<string name="bitmap_cache_size">bitmap cache size</string>
|
||||
<string name="bitmap_retain_number_summary">Keep the number of chapters read %s</string>
|
||||
<string name="bitmap_retain_number">Number of manga reservations</string>
|
||||
<string name="export_pics_file">Export Picture Files</string>
|
||||
<!-- string end -->
|
||||
<string name="error_decode_bitmap">Fail to decode bitmap</string>
|
||||
|
||||
@@ -109,6 +109,11 @@
|
||||
android:summary="@string/bitmap_cache_size_summary"
|
||||
android:title="@string/bitmap_cache_size" />
|
||||
|
||||
<io.legado.app.lib.prefs.Preference
|
||||
android:key="bitmapRetainNum"
|
||||
android:summary="@string/bitmap_retain_number_summary"
|
||||
android:title="@string/bitmap_retain_number" />
|
||||
|
||||
<io.legado.app.lib.prefs.Preference
|
||||
android:key="preDownloadNum"
|
||||
android:summary="@string/pre_download_s"
|
||||
|
||||
Reference in New Issue
Block a user