2012-11-30 28 views
7

Kullanıcı benim uygulamayı açtıktan sonra 5-10 saniye içinde cihazda yüklü tüm uygulamaların listesini almam gerekiyor.Android: Cihaz uygulamalarının listesini alma - Çok yavaş

Bunun sebebi yakl. Android cihazımın tipik bir kullanıcısı için 5-10 saniye, bir cihaza yüklü uygulamalar hakkında bilgi istemek için.

İlgili olmak için, uyguladığım her yüklendiğinde yüklü uygulamalar listesinin yeni bir kopyasını oluşturmalıyım. Bununla birlikte, aşağıdaki kodu kullanarak, dört çekirdekli bir Android cihazda yaklaşık 30 saniye sürecektir. 400 uygulama (sistem ve yüklü - her ikisine de ihtiyacım var).

'Create on' içinde çalıştırılan kod vardı, ancak hiç kimse uygulamayı açmak için 30 saniye beklemiyordu. Bu yüzden, AsyncTask'a taşıdım, böylece uygulama hemen açılır. Ama yine de, +30 saniye sürüyor; ve eğer birisi liste yüklenmeden önce belirli bir uygulama isterse, doğru bilgiyi alamayabilirler.

Bu kod neden bu kadar yavaş? Ve bunu hızlandırmak için ne yapabilirim? Ben 10 kat daha hızlı yapabilir ya da bana iyi bir ipucu verebilir herkes altın ödeyecek.

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

Bu ayarların tüm uygulama listesi aynı aygıtta ne kadar hızlı yüklenir? – FoamyGuy

+0

Aynı cihazda (önerdiğiniz gibi) ayarları seçeneğini kullanarak test ettim ve yukarıdaki koddan daha hızlı. Yüklemek için yaklaşık 10-15 saniye. Hala ideal değil ama daha iyi. Baska öneri? – jjj

+0

Hangi kodun en çok zamana ihtiyacı olduğunu biliyor musunuz? – Uooo

cevap

2

(Sanırım) o APK'nızdan yüklenmesi gerektiğinden etiket, bu kadar uzun sürdü PackageInfo LoadLabel slow performance

Alma bakın. Bu arada sadece paket isimlerini gösterebilir ve adım adım etiketle değiştirebilirsiniz.