Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取android上已安装应用程序列表的最有效方法(我指的是加载速度性能)?_Android - Fatal编程技术网

获取android上已安装应用程序列表的最有效方法(我指的是加载速度性能)?

获取android上已安装应用程序列表的最有效方法(我指的是加载速度性能)?,android,Android,我开发了一个应用程序,其中包含一个显示已安装应用程序列表视图的活动,每一行都有图标、应用程序标签和复选框。该应用程序在我的nexus one和其他设备上运行良好,但在某些设备上,例如htc legend(froyo),速度非常慢(活动出现listview前1分钟) 首先,我调用应用程序列表: private String[] getAppList(){ ArrayList<String> results=new ArrayList<String>();

我开发了一个应用程序,其中包含一个显示已安装应用程序列表视图的活动,每一行都有图标、应用程序标签和复选框。该应用程序在我的nexus one和其他设备上运行良好,但在某些设备上,例如htc legend(froyo),速度非常慢(活动出现listview前1分钟)

首先,我调用应用程序列表:

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()