浏览代码

Cache source package icons

arkon 5 年之前
父节点
当前提交
06c3f57f62
共有 1 个文件被更改,包括 6 次插入2 次删除
  1. 6 2
      app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt

+ 6 - 2
app/src/main/java/eu/kanade/tachiyomi/extension/ExtensionManager.kt

@@ -50,6 +50,8 @@ class ExtensionManager(
      */
     private val installedExtensionsRelay = BehaviorRelay.create<List<Extension.Installed>>()
 
+    private val iconMap = mutableMapOf<String, Drawable>()
+
     /**
      * List of the currently installed extensions.
      */
@@ -61,8 +63,10 @@ class ExtensionManager(
 
     fun getAppIconForSource(source: Source): Drawable? {
         val pkgName = installedExtensions.find { ext -> ext.sources.any { it.id == source.id } }?.pkgName
-        return if (pkgName != null) context.packageManager.getApplicationIcon(pkgName)
-        else null
+        if (pkgName != null) {
+            return iconMap[pkgName] ?: iconMap.getOrPut(pkgName) { context.packageManager.getApplicationIcon(pkgName) }
+        }
+        return null
     }
 
     /**