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.

  • Android: ¿Cómo poner un archivo de imagen de la tarjeta SD a HashMap con simpleadapter?
  • TreeMap a ArrayList Java
  • Android ListView CHOICE_MODE_MULTIPLE, cómo establecer el índice marcado?
  • Vista de lista personalizada con el problema de la casilla de verificación
  • Cómo eliminar elementos de la casilla de verificación de la lista
  • Cómo borrar caché de Android
  • Vista de lista de Android con el problema de la casilla de verificación
  • Obtener nombres de archivo desde un directorio en Android
  • El clic de Listitem no funciona con las casillas de verificación Android
  • Android - Inflando ListView
  • Intenta invocar el método de interfaz 'boolean java.util.List.add (java.lang.Object)' en una referencia de objeto nulo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.