From a0fab45344cd4608adbc158885a646cbe58be448 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Wed, 29 Apr 2026 18:31:39 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20Optimize=20App=20List=20loading=20b?= =?UTF-8?q?y=20caching=20PackageManager=20metadata?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refactor AppList loading to fetch labels and icons once per app before sorting and prioritizing. This reduces expensive IPC calls from O(N log N) to O(N). Co-authored-by: Asutorufa <16442314+Asutorufa@users.noreply.github.com> --- .../io/github/asutorufa/yuhaiin/compose/AppList.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/kotlin/io/github/asutorufa/yuhaiin/compose/AppList.kt b/app/src/main/kotlin/io/github/asutorufa/yuhaiin/compose/AppList.kt index 81f5bf32..3c0a118e 100644 --- a/app/src/main/kotlin/io/github/asutorufa/yuhaiin/compose/AppList.kt +++ b/app/src/main/kotlin/io/github/asutorufa/yuhaiin/compose/AppList.kt @@ -110,15 +110,16 @@ fun SharedTransitionScope.AppListComponent( val checkedApps = MainApplication.Companion.store.getStringSet("app_list") val apps = mutableListOf() - packages?.sortBy { it.loadLabel(packageManager).toString() } - - var index = 0 - packages?.forEach { - val app = AppListData( + val appList = packages?.map { + AppListData( it.loadLabel(packageManager).toString(), // app name it.packageName, it.loadIcon(packageManager), // icon (it.flags and ApplicationInfo.FLAG_SYSTEM) > 0, // is system ) + }?.sortedBy { it.appName } + + var index = 0 + appList?.forEach { app -> if (checkedApps.contains(app.packageName)) apps.add(index++, app) else apps.add(app) }