【问题标题】:PackageInfo LoadLabel slow performancePackageInfo LoadLabel 性能缓慢
【发布时间】: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


【解决方案1】:

您可以在您的应用程序中构建一个“已知”应用程序名称的数据库,并在您的应用程序每次遇到新包时更新它。第一次运行需要一段时间,但之后您只需检查一个或两个包名称即可节省大量时间。

【讨论】:

    猜你喜欢
    • 2010-10-14
    • 2015-01-27
    • 2021-06-04
    • 2016-11-09
    • 2021-06-21
    • 2012-05-11
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多