Android:获取设备应用程序列表 - 非常慢

时间:2012-11-30 01:50:52

标签: android list

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

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

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

然而,使用下面的代码在四核Android设备上花费超过30秒。 400个应用程序(系统和已安装 - 我需要两个)。

我在'on create'中执行了代码,但没有人会等待30秒才能打开应用程序。 所以我把它移到AsyncTask,所以我的应用程序打开immediadetelly。 但仍然需要+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;
}

1 个答案:

答案 0 :(得分:2)

请参阅PackageInfo LoadLabel slow performance

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