Намерение выбрать установленное приложение медленно в моей деятельности, почему? - PullRequest
3 голосов
/ 05 января 2010

Если вы долго нажимаете на рабочем столе и выбираете, чтобы добавить ярлык приложения, вы увидите список, отображающий все ваши установочные приложения. Мне нужна была такая же функциональность в моем приложении, поэтому я скопировал намерение из источника запуска:

        Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
        mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);            
        Intent pickIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
        pickIntent.putExtra(Intent.EXTRA_INTENT, mainIntent);
        this.startActivityForResult(pickIntent, MoreIconsConstants.REQUEST_PICK_APPLICATION)

Когда это выполняется на панели запуска, это довольно быстро. Когда я выполняю это в своей деятельности, это может занять 15 секунд вместо 3. Кажется, что программа запуска должна кэшировать эти данные в течение некоторого времени? Можно ли как-нибудь кэшировать данные тоже?

Спасибо!

1 Ответ

2 голосов
/ 03 декабря 2011

Вы можете прочитать все приложения, которые устанавливаются по этому коду

final PackageManager pm = a.getPackageManager();

    Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
    mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);

    final List<ResolveInfo> apps = pm.queryIntentActivities(mainIntent, 0);
    Collections.sort(apps, new ResolveInfo.DisplayNameComparator(pm));

    for (int i = 0; i < apps.size(); i++) 
    {
        ResolveInfo info = apps.get(i);
       //Intent to start the app
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        intent.setComponent(new ComponentName(info.activityInfo.applicationInfo.packageName,info.activityInfo.name));
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
        //Load app icon
        info.activityInfo.loadIcon(pm)
        //Load app label
        info.loadLabel(pm)
}

Проверьте этот пример кода http://developer.android.com/resources/samples/Home/src/com/example/android/home/Home.html поиск функции loadApplications

У меня была та же проблема, поэтому я загрузил приложение с помощью кода выше в потоке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...