स्टार्टअप में लगने वाला समय, हर दिन के सक्रिय उपयोगकर्ताओं को बनाए रखने के लिए एक अहम मेट्रिक है. इससे यह पक्का किया जा सकता है कि पहली बार इंटरैक्ट करने वाले उपयोगकर्ता को बेहतर अनुभव मिले. यह खास तौर पर कम रैम वाले एनवायरमेंट में सही होता है, जहां परफ़ॉर्मेंस से जुड़े फ़ैसले लिए जा सकते हैं. हालांकि, ऐप्लिकेशन के स्टार्टअप को बेहतर बनाने से पहले, उन पहलुओं को समझना ज़रूरी है जो स्टार्टअप में योगदान देते हैं.
सबसे सही तरीके
बेसलाइन प्रोफ़ाइल के साथ शिप करना
बेसलिन प्रोफ़ाइलें, कोड को चलाने की स्पीड को पहले लॉन्च से करीब 30% तक बढ़ा देती हैं. ऐसा इसलिए होता है, क्योंकि ये शामिल किए गए कोड पाथ के लिए, इंटरप्रेटेशन और जस्ट-इन-टाइम (JIT) कंपाइलेशन के चरणों को छोड़ देती हैं. किसी ऐप्लिकेशन में बेसलाइन प्रोफ़ाइल शामिल करने से, Android Runtime (ART), शामिल किए गए कोड पाथ को Ahead of Time (AOT) कंपाइलेशन के ज़रिए ऑप्टिमाइज़ कर सकता है. इससे हर नए उपयोगकर्ता और ऐप्लिकेशन के हर अपडेट के लिए, परफ़ॉर्मेंस को बेहतर बनाया जा सकता है.
ईगर इनिशियलाइज़ेशन से बचें
ऐसे काम करने से बचें जो आपके ऐप्लिकेशन के स्टार्टअप सीक्वेंस में ज़रूरी नहीं हैं.
ऐप्लिकेशन के प्रोसेस शुरू करने की सबसे आम वजह, ऐप्लिकेशन को लॉन्च करना है. हालांकि, WorkManager, JobScheduler, BroadcastReceiver, बाउंड सेवाएं, और AndroidX स्टार्टअप लाइब्रेरी भी बैकग्राउंड में ऐप्लिकेशन की प्रोसेस शुरू कर सकती हैं. अगर हो सके, तो अपनी Application
क्लास में किसी भी चीज़ को ज़रूरत से ज़्यादा इनिशियलाइज़ करने से बचें. कई लाइब्रेरी, ज़रूरत के हिसाब से शुरू होने की सुविधा देती हैं. इससे, उन्हें सिर्फ़ तब शुरू किया जा सकता है, जब उनकी ज़रूरत हो.
टास्क को यूज़र इंटरफ़ेस (यूआई) थ्रेड से बैकग्राउंड थ्रेड में ले जाना
अगर कुछ टास्क पूरे होने में ज़्यादा समय लग रहा है और वे मुख्य थ्रेड को ब्लॉक कर रहे हैं, तो उन्हें बैकग्राउंड थ्रेड में ले जाएं. इसके अलावा, WorkManager का इस्तेमाल करके यह पक्का करें कि टास्क सही तरीके से पूरे हो रहे हैं. उन कार्रवाइयों की पहचान करें जिनमें ज़्यादा समय लगता है या जो उम्मीद से ज़्यादा समय लेती हैं. इन टास्क को ऑप्टिमाइज़ करने से, स्टार्टअप में लगने वाले समय को काफ़ी हद तक कम किया जा सकता है.
डिस्क रीड कंटेंशन की गंभीर समस्या का विश्लेषण करना और उसे ठीक करना
StrictMode एक डेवलपर टूल है. यह ऐप्लिकेशन के मुख्य थ्रेड पर, गलती से डिस्क या नेटवर्क ऐक्सेस का इस्तेमाल करने का पता लगाने में मदद कर सकता है. मुख्य थ्रेड पर यूज़र इंटरफ़ेस (यूआई) से जुड़ी कार्रवाइयां की जाती हैं और ऐनिमेशन होते हैं. जब टूल को सुधार की ज़रूरत वाले किसी संभावित हिस्से का पता चलता है, तब ऐप्लिकेशन को अपने-आप बंद किया जा सकता है. इसके अलावा, उल्लंघन की जानकारी को सेव किया जा सकता है, ताकि बाद में उसकी जांच की जा सके.
सिंक्रोनस आईपीसी से बचें
आपके ऐप्लिकेशन के काम करने में अक्सर लंबे समय तक रुकावटें आती हैं. इसकी वजह, Android पर इंटर-प्रोसेस कम्यूनिकेशन (आईपीसी) मैकेनिज़्म के तहत होने वाले बाइंडर कॉल होते हैं. Android के नए वर्शन में, यूज़र इंटरफ़ेस (यूआई) थ्रेड के रुकने की यह सबसे सामान्य वजहों में से एक है. आम तौर पर, इस समस्या को ठीक करने के लिए, ऐसे फ़ंक्शन को कॉल करने से बचें जो बाइंडर कॉल करते हैं. अगर ऐसा करना ज़रूरी है, तो आपको वैल्यू को कैश मेमोरी में सेव करना चाहिए या काम को बैकग्राउंड थ्रेड में ले जाना चाहिए. ज़्यादा जानकारी के लिए, थ्रेड शेड्यूल करने में होने वाली देरी लेख पढ़ें.