2013-05-08 8 views
17

जब भी मैं कोई ऐप करता हूं तो मैं हमेशा स्ट्रिंग संसाधन से एक्सएमएल से संदर्भित करने के बजाय स्ट्रिंग को हार्डकोड करता हूं। अनुप्रयोग ठीक काम करता है लेकिन मुझे @string संसाधन का उपयोग करने की चेतावनी देता हैस्ट्रिंग का हार्ड कोडिंग प्रदर्शन को प्रभावित करता है?

उदाहरण बटन:

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="click here" /> 

मेरा प्रश्न है, तो मुझे क्या करना है कि क्या यह अपने आवेदन के प्रदर्शन को प्रभावित करेगा तो या यह (@string संसाधन) बस अंतर्राष्ट्रीयकरण के लिए प्रयोग किया जाता है ।

+22

यदि आप उन्हें हार्ड कोड करते हैं, तो डेवलपर (ओं) से आपको खराब प्रदर्शन मिलता है। ;) – AlbeyAmakiir

उत्तर

40

यह स्थानीयकरण के साथ आपकी सहायता करने के लिए एक एंड्रॉइड लिंट चेतावनी है।

तकनीकी रूप से, हार्ड कोडिंग तार आपके ऐप को थोड़ा बेहतर प्रदर्शन करेंगे, क्योंकि इसे प्रत्येक बार संबंधित R int से स्ट्रिंग को देखना नहीं होगा। हालांकि, यह प्रदर्शन अंतर नगण्य होगा, और कोई भी मानव इसे नोटिस करने में सक्षम नहीं होगा।

हालांकि, आपको हमेशा अपने स्ट्रिंग संसाधनों को मान फ़ोल्डर में रखें क्योंकि यह स्थानीयकरण को बहुत आसान बनाता है।

+1

अच्छी तरह से कहा। +1 - –

+0

+1 अंतर मिली सेकंड में हो सकता है ?? – Raghunandan

+1

@ रघुनाथन हाँ। शायद 10-100 मिलीसेकंड की सीमा में। –

4

मुझे कोई कारण नहीं है कि आपको हार्ड-कोडेड स्ट्रिंग का उपयोग करके खराब प्रदर्शन मिलेगा। हार्ड-कोडेड तारों से जुड़े कम कदम हैं। हालांकि, एप्लिकेशन और यूआई कोड से संसाधन स्ट्रिंग को अलग करना निश्चित रूप से सर्वोत्तम अभ्यास है।

4

यह कोई प्रदर्शन समस्या नहीं बनाएगा। लेकिन स्ट्रिंग्स.एक्सएमएल में तारों को परिभाषित करने के लिए बनाए रखने और लोलाइजेशन की आसानी के लिए प्रोत्साहित किया जाता है। उदाहरण के लिए नीचे दो परिदृश्य पर विचार करें।

परिदृश्य 1

जब आप कई स्थानों में इस्तेमाल किया एक स्ट्रिंग को बदलने की जरूरत। आपके मामले में आपको सभी लेआउट में सभी "click here" को बदलना होगा। लेकिन अगर आपने स्ट्रिंग्स.एक्सएमएल में घोषित किया है तो एक्सएमएल में केवल बदलाव ही उन्हें बदल देगा।

परिदृश्य 2

एक और उदाहरण के लिए यदि आप अलग अलग स्थान के लिए अलग भाषा दिखाना चाहते हैं तो आप string.xml उपयोग करने के लिए की जरूरत है।

0

आपके ऐप ने तो Localization का समर्थन नहीं करेंगे, अगर है कि आपकी ऐप की आवश्यकता नहीं है तो कठिन कोडित तार का उपयोग कर कोई समस्या नहीं होगी।

1

मुझे नहीं लगता कि एक स्ट्रिंग हार्डकोडिंग आपके प्रोग्राम को धीमी गति से चलाने के लिए बनाती है .. वास्तव में यह प्रदर्शन को बढ़ाएगा क्योंकि आरजेजा वर्ग में स्ट्रिंग के लिए किसी भी लुकअप की आवश्यकता नहीं है।

1- स्थानीयकरण 2- आप को कई जगहों पर एक ही स्ट्रिंग का उपयोग कर रहे हैं और सभी स्थानों में ही संपादित करना चाहते हैं यदि आप को बचाता है -: strings.xml से स्ट्रिंग संदर्भित सबसे अच्छा अभ्यास के कारण 2 कारण है व्यक्तिगत रूप से सभी हार्ड-कोडित तारों को संपादित करने का ओवरहेड।

1

हार्ड कोडिंग स्ट्रिंग सीधे प्रदर्शन को प्रभावित नहीं करेंगे। यह रखरखाव को प्रभावित करता है।

यदि आप स्ट्रिंग को हार्डकोड करते हैं और बाद में चरण में यदि आप "मुझे" क्लिक करें "या" कुछ "स्ट्रिंग को बदलना चाहते हैं, तो आपको स्ट्रिंग को बदलने के लिए अपनी पूरी परियोजना को खोजना होगा और यह सब प्रयोग किया जाता है। तो strings.xml हमेशा का पालन करने के लिए बेहतर है। :)

4

जैसा कि अन्य ने कहा, यह स्थानीयकरण के लिए है, लेकिन प्रदर्शन के लिए, यह इस बात पर निर्भर करता है कि प्रति सेकंड कितनी बार देखा जा रहा है। मैंने एक ऐसा मामला देखा है जहां स्टार्टअप में कोई ऐप धीमा है, और स्टैक नमूनाकरण से पता चला है कि स्ट्रिंग के संसाधन लुकअप में 50% समय व्यतीत किया जा रहा था, और तारों को देखने के कारण उन्हें स्प्लैश स्क्रीन पर प्रदर्शित करना था जो ऐप शुरू होने के दौरान उपयोगकर्ता को देखने के लिए कुछ देता है!

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