invalidate

fun invalidate(packageName: String)(source)

Drops every cached icon for packageName (all activities, all profiles) so the next peek/icon call re-fetches it. Without this, an app update that changes its icon would show the stale one for the rest of the process's life — warmAll and icon() both skip anything already present via LinkedHashMap.containsKey, and the cache is now large enough (MAX = 800) that natural LRU eviction rarely reaches it. Call this from LauncherApps.Callback.onPackageChanged/onPackageRemoved.