Potrzebuję uzyskać listę wszystkich aplikacji zainstalowanych na urządzeniu w ciągu 5-10 sekund po otwarciu aplikacji przez użytkownika.Android: Pobieranie listy aplikacji na urządzenia - bardzo wolno
Dzieje się tak, ponieważ trwa to ok. 5-10 sekund dla typowego użytkownika mojej aplikacji na Androida, aby poprosić o informacje o aplikacjach zainstalowanych na urządzeniu.
Aby to było istotne, za każdym razem, gdy moja aplikacja jest ładowana, muszę utworzyć nową kopię listy zainstalowanych aplikacji.
Jednak użycie kodu poniżej zajmuje ponad 30 sekund na czterordzeniowym urządzeniu z systemem Android z ok. 400 aplikacji (system i zainstalowany - potrzebuję obu).
Miałem kod wykonywalny w "na tworzenie", ale nikt nie czekał 30 sekund, aby otworzyć aplikację. Przesunąłem go do AsyncTask, więc moja aplikacja otwiera się natychmiast. Ale nadal trwa to +30 sekund; a jeśli ktoś poprosi o konkretną aplikację przed załadowaniem listy, może nie uzyskać poprawnych informacji.
Dlaczego ten kod jest taki wolny? I co mogę zrobić, żeby to przyspieszyć? Zapłacę w złocie każdemu, kto może zrobić to 10 razy szybciej lub dać mi dobrą napiwek.
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;
}
jak szybko pełna lista aplikacji w ustawieniach ładuje się na tym samym urządzeniu? – FoamyGuy
Przetestowałem to za pomocą opcji ustawień (zgodnie z sugestią) na tym samym urządzeniu i jest szybsze niż powyższy kod. Około 10-15 sekund, aby załadować. Nadal nie jest idealny, ale lepszy. Jakieś sugestie? – jjj
Czy wiesz, która linia kodu wymaga najwięcej czasu? – Uooo