Android: Obtención de la lista de aplicaciones del dispositivo – Muy lento

Tengo que obtener la lista de todas las aplicaciones instaladas en el dispositivo dentro de 5-10 segundos después de que el usuario abra mi aplicación.

Esto es porque, toma aprox. 5-10 segundos para un usuario típico de mi aplicación Android, para solicitar la información sobre las aplicaciones instaladas en un dispositivo.

Para ser relevante, tengo que crear una copia nueva de la lista de aplicaciones instaladas cada vez que se carga mi aplicación.

Sin embargo, el uso de código a continuación toma más de 30 segundos en un dispositivo Android de cuatro núcleos con aprox. 400 aplicaciones (sistema e instalado – necesito ambos).

Tenía el código de ejecución en 'en crear', pero nadie esperaría 30 segundos para abrir la aplicación. Así que lo he movido a AsyncTask, sólo para que mi aplicación se abre inmediatamente. Pero aún así, se tarda +30 segundos; Y si alguien solicita una aplicación específica antes de cargar la lista, es posible que no obtengan la información correcta.

¿Por qué este código es tan lento? ¿Y qué puedo hacer para acelerar esto? Voy a pagar en oro a cualquiera que pueda hacerlo 10 veces más rápido o darme un buen consejo.

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; } 

Vea PackageInfo LoadLabel rendimiento lento

Conseguir la etiqueta está tomando tanto tiempo, porque (creo) que necesita ser cargado desde el APK. Usted podría mientras tanto apenas mostrar los nombres del paquete y paso a paso reemplazarlo con la etiqueta.

  • Lista de todos los dispositivos Android con características
  • ListFragment no muestra cambios en el tiempo actual
  • Android: ¿Cómo puedo comprobar un elemento en particular en CheckView ListView?
  • Android RecyclerView Scroll Bug
  • ¿Ordenar nombres en una lista alfabéticamente?
  • Android: ¿Cómo poner un archivo de imagen de la tarjeta SD a HashMap con simpleadapter?
  • Obtener nombres de archivo desde un directorio en Android
  • Aplicación de Android foto de uso para la lista de amigos
  • Parcel Lista de Lista de objeto Parcelable
  • Cómo borrar caché de Android
  • Obtener la lista de lugares WiFi disponibles
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.