From ed15933504d5e219c7609776aa240c2dfd1ff55a Mon Sep 17 00:00:00 2001 From: fengyuecanzhu <1021300691@qq.com> Date: Mon, 17 Apr 2023 19:24:25 +0800 Subject: [PATCH 1/2] Enable the in-memory cache to cache objects. --- app/src/main/java/io/legado/app/help/CacheManager.kt | 12 ++++++------ .../main/java/io/legado/app/help/http/CookieStore.kt | 2 +- .../io/legado/app/model/analyzeRule/AnalyzeUrl.kt | 6 ++++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/io/legado/app/help/CacheManager.kt b/app/src/main/java/io/legado/app/help/CacheManager.kt index 33073bbb8..38925407a 100644 --- a/app/src/main/java/io/legado/app/help/CacheManager.kt +++ b/app/src/main/java/io/legado/app/help/CacheManager.kt @@ -15,10 +15,10 @@ object CacheManager { /** * 最多只缓存50M的数据,防止OOM */ - private val memoryLruCache = object : LruCache(1024 * 1024 * 50) { + private val memoryLruCache = object : LruCache(1024 * 1024 * 50) { - override fun sizeOf(key: String, value: String): Int { - return value.memorySize() + override fun sizeOf(key: String, value: Any): Int { + return value.toString().memorySize() } } @@ -41,12 +41,12 @@ object CacheManager { } } - fun putMemory(key: String, value: String) { + fun putMemory(key: String, value: Any) { memoryLruCache.put(key, value) } //从内存中获取数据 使用lruCache - fun getFromMemory(key: String): String? { + fun getFromMemory(key: String): Any? { return memoryLruCache.get(key) } @@ -56,7 +56,7 @@ object CacheManager { fun get(key: String): String? { getFromMemory(key)?.let { - return it + if (it is String) return it } val cache = appDb.cacheDao.get(key) if (cache != null && (cache.deadline == 0L || cache.deadline > System.currentTimeMillis())) { diff --git a/app/src/main/java/io/legado/app/help/http/CookieStore.kt b/app/src/main/java/io/legado/app/help/http/CookieStore.kt index 6abb9fece..707c90293 100644 --- a/app/src/main/java/io/legado/app/help/http/CookieStore.kt +++ b/app/src/main/java/io/legado/app/help/http/CookieStore.kt @@ -43,7 +43,7 @@ object CookieStore : CookieManager { override fun getCookie(url: String): String { val domain = NetworkUtils.getSubDomain(url) CacheManager.getFromMemory("${domain}_cookie")?.let { - return it + if (it is String) return it } val cookieBean = appDb.cookieDao.get(domain) diff --git a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt index a0f3a4c40..cf54e1df6 100644 --- a/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt +++ b/app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt @@ -614,8 +614,10 @@ class AnalyzeUrl( if (enabledCookieJar) { val key = "${domain}_cookieJar" CacheManager.getFromMemory(key)?.let { - CookieStore.replaceCookie(domain, it) - CacheManager.deleteMemory(key) + if (it is String) { + CookieStore.replaceCookie(domain, it) + CacheManager.deleteMemory(key) + } } } } From d3e58adad134f8912b3dfe8aa31d09edd321987b Mon Sep 17 00:00:00 2001 From: fengyuecanzhu <1021300691@qq.com> Date: Mon, 17 Apr 2023 19:30:59 +0800 Subject: [PATCH 2/2] Enable the in-memory cache to cache objects. --- app/src/main/java/io/legado/app/help/CacheManager.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/io/legado/app/help/CacheManager.kt b/app/src/main/java/io/legado/app/help/CacheManager.kt index 38925407a..3ae32e2bc 100644 --- a/app/src/main/java/io/legado/app/help/CacheManager.kt +++ b/app/src/main/java/io/legado/app/help/CacheManager.kt @@ -35,7 +35,7 @@ object CacheManager { is ByteArray -> ACache.get().put(key, value, saveTime) else -> { val cache = Cache(key, value.toString(), deadline) - putMemory(key, value.toString()) + putMemory(key, value) appDb.cacheDao.insert(cache) } }