PackageInfo LoadLabel 性能下降

jjj*_*jjj 5 java performance android

我正在为 Android 编写一个应用程序,其中获取应用程序的标签(实际名称)非常慢。特别是这段代码的表现非常糟糕:

packageInfo.loadLabel(pm);
Run Code Online (Sandbox Code Playgroud)

只是给你一些指标。在安装了 400 个应用程序的 Android 设备上,构建所有应用程序包名称(com.android.* 等)的列表只需不到一秒钟。但是,获取每个应用程序的实际名称需要 30 多秒的时间。

我也试过这段代码,但结果几乎相同(非常慢):

(String)pm.getApplicationLabel(packageInfo);
Run Code Online (Sandbox Code Playgroud)

问题:如果应用程序包名称已知(即“com.android.htmlviewer”),是否有其他方法可以快速获取应用程序名称(即“HTML 查看器”)?

小智 1

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