【发布时间】:2012-12-01 11:49:23
【问题描述】:
我正在为 Android 编写一个应用程序,其中获取应用程序的标签(实际名称)非常慢。特别是这段代码的表现非常糟糕:
packageInfo.loadLabel(pm);
只是为了给你一些指标。在安装了 400 个应用程序的 Android 设备上,构建所有应用程序包名(com.android.* 等)的列表将花费不到一秒钟的时间。但是,获取每个应用程序的实际名称需要 30 多秒。
我也试过这段代码,但结果几乎一样(非常慢):
(String)pm.getApplicationLabel(packageInfo);
问题:如果应用程序包名已知(即“com.android.htmlviewer”),是否有另一种方法可以快速获取应用程序名称(即“HTML Viewer”)?
【问题讨论】:
-
loadLabel 和 getApplicationLabel 真的没有区别吗?
-
这在 Android 9+ 中仍然是一个问题。本地化标签在每个应用程序中作为资源进行维护。当系统区域设置更改时,这些标签中的任何一个都可能更改,因此必须重新读取它们。显然,系统会维护应用程序标签的缓存,因为它会非常快速地生成应用程序的排序列表。但似乎
loadLabel从资源中重新获取标签,绕过了缓存。现在...有没有办法让其他应用访问系统缓存的应用标签列表?
标签: java android performance