【问题标题】:Android: Getting list of device applications - Very SlowAndroid:获取设备应用程序列表 - 非常慢
【发布时间】:2012-11-18 05:44:23
【问题描述】:

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

【问题讨论】:

  • 设置中的完整应用程序列表在同一设备上加载的速度有多快?
  • 我已经在同一设备上使用设置选项(如您所建议的那样)对其进行了测试,这比上面的代码更快。加载大约需要 10-15 秒。仍然不理想,但更好。有什么建议吗?
  • 你知道哪一行代码最需要时间吗?
  • 花时间的是循环。
  • 此特定行导致问题:InstalledAppsName.add(packageInfo.loadLabel(pm).toString());

标签: android list


【解决方案1】:

PackageInfo LoadLabel slow performance

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 1970-01-01
    • 2017-01-12
    • 1970-01-01
    • 2012-10-12
    相关资源
    最近更新 更多