2012-11-30 54 views
7

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

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

为了保持相关性,我必须在每次加载应用程序时创建已安装应用程序列表的全新副本。然而,使用下面的代码,它需要超过30秒的四核Android设备上,大约需要300秒。 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; 
} 
+0

设置中的完整应用程序列表在同一设备上的加载速度有多快? – FoamyGuy

+0

我使用设置选项(如您所建议的)在相同设备上测试了它,并且比上面的代码更快。大约需要10-15秒才能加载。仍然不理想,但更好。有什么建议么? – jjj

+0

你知道哪一行代码最需要时间吗? – Uooo

回答

相关问题