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

jjj*_*jjj 7 android list

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

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

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

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

我在"创建时"执行了代码,但没有人会等待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;
}
Run Code Online (Sandbox Code Playgroud)

小智 2

请参阅PackageInfo LoadLabel 性能缓慢

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