9

我需要在用户打开我的应用程序后 5-10 秒内获取设备上安装的所有应用程序的列表。

这是因为,它需要大约。我的 android 应用程序的典型用户需要 5-10 秒来请求有关设备上安装的应用程序的信息。

为了相关,每次加载我的应用程序时,我都必须创建已安装应用程序列表的新副本。

但是,在四核 Android 设备上使用下面的代码需要 30 多秒,大约需要 30 秒。400 个应用程序(系统和已安装 - 我都需要)。

我在“创建时”中执行了代码,但没有人会等待 30 秒来打开应用程序。所以我把它移到了 AsyncTask,这样我的应用程序就可以立即打开。但仍然需要 +30 秒;如果有人在加载列表之前询问特定的应用程序,他们可能无法获得正确的信息。

为什么这段代码这么慢?我能做些什么来加快速度?我会用黄金支付给任何可以让它快 10 倍或给我一个好的小费的人。

final PackageManager pm = getPackageManager();
List<ApplicationInfo> packages = pm.getInstalledApplications(PackageManager.GET_META_DATA);

for (ApplicationInfo packageInfo : packages) {
    InstalledAppsName.add(packageInfo.loadLabel(pm).toString());
    CountApps=CountApps+1;
}
4

1 回答 1

2

请参阅PackageInfo LoadLabel 性能缓慢

获取标签需要很长时间,因为(我认为)它需要从 APK 加载。同时,您可以只显示包名称并逐步将其替换为标签。

于 2013-06-11T17:00:49.577 回答