Bladeren bron

Merge pull request #3004 from fengyuecanzhu/master

Enable the in-memory cache to cache objects.
Xwite 3 jaren geleden
bovenliggende
commit
acd247eeb5

+ 7 - 7
app/src/main/java/io/legado/app/help/CacheManager.kt

@@ -15,10 +15,10 @@ object CacheManager {
     /**
     /**
      * 最多只缓存50M的数据,防止OOM
      * 最多只缓存50M的数据,防止OOM
      */
      */
-    private val memoryLruCache = object : LruCache<String, String>(1024 * 1024 * 50) {
+    private val memoryLruCache = object : LruCache<String, Any>(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()
         }
         }
 
 
     }
     }
@@ -35,18 +35,18 @@ object CacheManager {
             is ByteArray -> ACache.get().put(key, value, saveTime)
             is ByteArray -> ACache.get().put(key, value, saveTime)
             else -> {
             else -> {
                 val cache = Cache(key, value.toString(), deadline)
                 val cache = Cache(key, value.toString(), deadline)
-                putMemory(key, value.toString())
+                putMemory(key, value)
                 appDb.cacheDao.insert(cache)
                 appDb.cacheDao.insert(cache)
             }
             }
         }
         }
     }
     }
 
 
-    fun putMemory(key: String, value: String) {
+    fun putMemory(key: String, value: Any) {
         memoryLruCache.put(key, value)
         memoryLruCache.put(key, value)
     }
     }
 
 
     //从内存中获取数据 使用lruCache
     //从内存中获取数据 使用lruCache
-    fun getFromMemory(key: String): String? {
+    fun getFromMemory(key: String): Any? {
         return memoryLruCache.get(key)
         return memoryLruCache.get(key)
     }
     }
 
 
@@ -56,7 +56,7 @@ object CacheManager {
 
 
     fun get(key: String): String? {
     fun get(key: String): String? {
         getFromMemory(key)?.let {
         getFromMemory(key)?.let {
-            return it
+            if (it is String) return it
         }
         }
         val cache = appDb.cacheDao.get(key)
         val cache = appDb.cacheDao.get(key)
         if (cache != null && (cache.deadline == 0L || cache.deadline > System.currentTimeMillis())) {
         if (cache != null && (cache.deadline == 0L || cache.deadline > System.currentTimeMillis())) {

+ 1 - 1
app/src/main/java/io/legado/app/help/http/CookieStore.kt

@@ -43,7 +43,7 @@ object CookieStore : CookieManager {
     override fun getCookie(url: String): String {
     override fun getCookie(url: String): String {
         val domain = NetworkUtils.getSubDomain(url)
         val domain = NetworkUtils.getSubDomain(url)
         CacheManager.getFromMemory("${domain}_cookie")?.let {
         CacheManager.getFromMemory("${domain}_cookie")?.let {
-            return it
+            if (it is String) return it
         }
         }
 
 
         val cookieBean = appDb.cookieDao.get(domain)
         val cookieBean = appDb.cookieDao.get(domain)

+ 4 - 2
app/src/main/java/io/legado/app/model/analyzeRule/AnalyzeUrl.kt

@@ -614,8 +614,10 @@ class AnalyzeUrl(
         if (enabledCookieJar) {
         if (enabledCookieJar) {
             val key = "${domain}_cookieJar"
             val key = "${domain}_cookieJar"
             CacheManager.getFromMemory(key)?.let {
             CacheManager.getFromMemory(key)?.let {
-                CookieStore.replaceCookie(domain, it)
-                CacheManager.deleteMemory(key)
+                if (it is String) {
+                    CookieStore.replaceCookie(domain, it)
+                    CacheManager.deleteMemory(key)
+                }
             }
             }
         }
         }
     }
     }