我需要在用户打开我的应用程序后 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;
}