获取android上已安装应用程序列表的最有效方法(我指的是加载速度性能)?
我开发了一个应用程序,其中包含一个显示已安装应用程序列表视图的活动,每一行都有图标、应用程序标签和复选框。该应用程序在我的nexus one和其他设备上运行良好,但在某些设备上,例如htc legend(froyo),速度非常慢(活动出现listview前1分钟) 首先,我调用应用程序列表:获取android上已安装应用程序列表的最有效方法(我指的是加载速度性能)?,android,Android,我开发了一个应用程序,其中包含一个显示已安装应用程序列表视图的活动,每一行都有图标、应用程序标签和复选框。该应用程序在我的nexus one和其他设备上运行良好,但在某些设备上,例如htc legend(froyo),速度非常慢(活动出现listview前1分钟) 首先,我调用应用程序列表: private String[] getAppList(){ ArrayList<String> results=new ArrayList<String>();
private String[] getAppList(){
ArrayList<String> results=new ArrayList<String>();
PackageManager pm = this.getPackageManager();
List<ApplicationInfo> list = pm.getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
Collections.sort(list, new ApplicationInfo.DisplayNameComparator(pm));
boolean includeSystemApps = getIntent().getBooleanExtra("sysapps",false);
for (ApplicationInfo AppInfo : list)
{
try
{
if(includeSystemApps || ((AppInfo.flags & ApplicationInfo.FLAG_SYSTEM)!=1))
{
results.add(AppInfo.packageName);
}
}
catch(Exception ex)
{
}
}
return (String[])results.toArray(new String[results.size()]);
}
我认为在某些设备上,长加载时间是由以下调用给出的:
this.getPackageManager()
现在我不认为这是一个硬件问题(cpu ram),因为传说它根本不是一个坏设备
但有一些粗略的数据:
-nexus one(姜红)活动负载~1秒
-图例(froyo)活动负载约40/60秒
有什么建议/意见吗?
提前感谢这要归功于设备上的Android设置和硬件。最好的办法是将加载移到异步任务中,并使用类似“请稍候,这可能需要一些时间”的ProgressDialog运行它
Joe好吧,没有什么可以做的,你可以缓存结果,如果这适合你的应用程序是的,我已经将Packagemanager缓存在自定义公共类的静态变量中,这肯定会加快下一个活动调用,感谢againI在两个Galaxy s上使用相同的慢速活动时间负载(40秒!)尝试上面的代码。我勒个去?在那个设备上,我尝试了应用程序“共享应用程序”(这个应用程序也有一个显示已安装应用程序的活动),我不确定,为什么不给开发者发电子邮件呢?
this.getPackageManager()