kunfei 4 лет назад
Родитель
Сommit
8c7af6f5a4

+ 3 - 0
app/src/main/java/io/legado/app/data/dao/CacheDao.kt

@@ -9,6 +9,9 @@ import io.legado.app.data.entities.Cache
 @Dao
 interface CacheDao {
 
+    @Query("select * from caches where `key` = :key")
+    fun get(key: String): Cache?
+
     @Query("select value from caches where `key` = :key and (deadline = 0 or deadline > :now)")
     fun get(key: String, now: Long): String?
 

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

@@ -36,15 +36,23 @@ object CacheManager {
     }
 
     fun get(key: String): String? {
-        return getFromMemory(key) ?: appDb.cacheDao.get(key, System.currentTimeMillis())
+        getFromMemory(key)?.let {
+            return it
+        }
+        val cache = appDb.cacheDao.get(key)
+        if (cache != null && (cache.deadline == 0L || cache.deadline > System.currentTimeMillis())) {
+            memoryLruCache.put(key, cache)
+            return cache.value
+        }
+        return null
     }
 
-    //从内存中获取数据 使用lrucache 支持过期功能
+    //从内存中获取数据 使用lruCache 支持过期功能
     private fun getFromMemory(key: String): String? {
         val cache = memoryLruCache.get(key) ?: return null
-        val deadline = cache!!.deadline
+        val deadline = cache.deadline
         return if (deadline == 0L || deadline > System.currentTimeMillis()) {
-            cache!!.value
+            cache.value
         } else {
             memoryLruCache.remove(key)
             null