2012-11-30 17 views
7

उपयोगकर्ता को मेरा ऐप खोलने के बाद 5-10 सेकंड के भीतर डिवाइस पर इंस्टॉल किए गए सभी ऐप्स की सूची प्राप्त करने की आवश्यकता है।एंड्रॉइड: डिवाइस अनुप्रयोगों की सूची प्राप्त करना - बहुत धीमी

ऐसा इसलिए है क्योंकि, लगभग लेता है। किसी डिवाइस पर इंस्टॉल किए गए ऐप्स के बारे में जानकारी का अनुरोध करने के लिए, मेरे एंड्रॉइड एप्लिकेशन के एक विशिष्ट उपयोगकर्ता के लिए 5-10 सेकंड।

प्रासंगिक होने के लिए, मुझे हर बार मेरा ऐप लोड होने पर इंस्टॉल किए गए ऐप्स की सूची की ताजा प्रति बनाना होगा।

हालांकि, नीचे दिए गए कोड का उपयोग करके क्वाड कोर एंड्रॉइड डिवाइस पर लगभग 30 सेकंड लगते हैं। 400 ऐप्स (सिस्टम और स्थापित - मुझे दोनों की आवश्यकता है)।

मेरे पास कोड बनाने पर कोड निष्पादित था लेकिन कोई भी ऐप खोलने के लिए 30 सेकंड का इंतजार नहीं करेगा। तो मैंने इसे AsyncTask में ले जाया है, बस मेरा ऐप तत्काल खुलता है। लेकिन फिर भी, इसमें +30 सेकंड लगते हैं; और यदि सूची लोड होने से पहले कोई विशिष्ट ऐप मांगता है, तो उन्हें सही जानकारी नहीं मिल सकती है।

यह कोड इतना धीमा क्यों है? और मैं इसे तेज करने के लिए क्या कर सकता हूं? मैं किसी भी व्यक्ति को सोने में भुगतान करूंगा जो इसे 10 गुना तेज कर सकता है या मुझे एक अच्छी टिप दे सकता है।

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

उसी डिवाइस पर सेटिंग में पूर्ण एप्लिकेशन सूची कितनी तेज़ी से लोड होती है? – FoamyGuy

+0

मैंने उसी डिवाइस पर सेटिंग्स विकल्प (जैसा कि आपने सुझाव दिया है) का उपयोग करके इसका परीक्षण किया है और यह उपरोक्त कोड से तेज़ है। लोड करने के लिए लगभग 10-15 सेकंड। अभी भी आदर्श नहीं है, लेकिन बेहतर है। कोई सुझाव? – jjj

+0

क्या आपको पता है कि कोड की कौन सी रेखा सबसे अधिक समय की आवश्यकता है? – Uooo

उत्तर

2

देखें PackageInfo LoadLabel slow performance

हो रही लेबल इतने लंबे समय ले जा रहा है, क्योंकि (मुझे लगता है कि) यह APK से लोड करने के लिए की जरूरत है। इस बीच आप केवल पैकेज नाम दिखा सकते हैं और चरण-दर-चरण इसे लेबल के साथ बदल सकते हैं।

संबंधित मुद्दे