Android में स्थिरांक, स्थिर वर्ग, इंटरफ़ेस या xml संसाधन को परिभाषित करने का सबसे अच्छा तरीका कौन सा है?


98

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

  • इस स्थिरांक, जावा स्टेटिक क्लास या जावा पब्लिक इंटरफ़ेस या xml संसाधन फ़ाइल को रखने का सबसे अच्छा तरीका क्या है? कब? क्यों?
  • जो बेहतर प्रदर्शन देता है ?, कब क्यों?

Ex: xml संसाधन

<integer name="config_build_type">0</integer>
<string-array name="url_authentication">
    <item >http://development.com/xxxx</item>
    <item >http://test.com/xxx</item>
    <item >http://example.com/xxx</item>
</string-array>

जावा स्थिर स्थिर

public class Config {
    public static final int BUILD_TYPE = 0; // 0 - development, 1 - test, 2 - live
    public static final String[] URL_AUTHENTICATION = {"http://development.com/", "http://test.com/", "http://example.com"};
}

1
मुझे अत्यधिक संदेह है कि प्रदर्शन यहां एक मुद्दा होगा ...
एलेक्स लॉकवुड

क्या वेब सेवा कॉल एकल वर्ग या एकाधिक वर्ग में है?
वेंकी

@venky, कि कई वर्गों में, प्रत्येक अलग उद्देश्य के लिए यानी उपयोगकर्ता प्रमाणीकरण के लिए एक और डेटा डाउनलोड करने के लिए एक और ..
Jayabal

जवाबों:


92

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

static finalस्थिरांक जावा बायटेकोड में संकलित किए जाते हैं; परियोजना संसाधनों को एपीके के भीतर एक द्विआधारी प्रारूप में संकलित किया गया है। या तो पहुँचना अत्यंत कुशल है ... यदि दोनों के बीच कोई अंतर है, तो यह अधिक से अधिक तुच्छ है।

आपके प्रोजेक्ट में संसाधनों / स्थिरांक का उपयोग कैसे किया जाना चाहिए, इस पर कोई निर्धारित नियम नहीं है। उस ने कहा, मैं व्यक्तिगत रूप से उन मूल्यों के लिए संसाधनों का उपयोग करता हूं जिन्हें मुझे अपने XML या जावा कोड में उपयोग करने की आवश्यकता हो सकती है । दूसरी ओर, मैं आमतौर पर उन static finalमूल्यों के लिए स्थिरांक का उपयोग करता हूं जो केवल मेरे जावा कोड द्वारा उपयोग किए जाएंगे और मेरे कार्यान्वयन के लिए विशिष्ट हैं।

यह भी ध्यान दें कि डिवाइस के वर्तमान कॉन्फ़िगरेशन (यानी स्क्रीन आकार, स्थान, आदि) के आधार पर रनटाइम पर एक्सएमएल संसाधनों को लोड करना संभव है। इसलिए आपको यह तय करते समय इस बात का ध्यान रखना चाहिए कि आपको एक्सएमएल में या सीधे अपनी .javaफाइलों में कंटीन्यू घोषित करना चाहिए या नहीं ।


संसाधन विभिन्न स्वादों / निर्माण प्रकारों में कॉन्फ़िगर करने के लिए बहुत आसान हैं
उम्मीद है कि

@ मेरे पास एक संदेह है कि क्या आप इसे स्पष्ट कर सकते हैं: स्थैतिक चर का उपयोग कम करने की सिफारिश की जाती है, अगर हम स्थैतिक चर के साथ निरंतर फ़ाइल बनाते हैं तो यह हमारे आवेदन के प्रदर्शन को प्रभावित नहीं करेगा?
पल्लवी

2
विचार करने के लिए एक अतिरिक्त बिंदु यह है कि, यदि एक अंतिम स्थिरांक का उपयोग कई वर्गों में किया जाता है, तो उन सभी वस्तुओं को पुन: संकलित करने की आवश्यकता होगी यदि स्थिरांक को बदल दिया जाता है। लेकिन ऐसा नहीं है यदि स्थिर को संसाधन के रूप में संग्रहीत किया जाता है। यह एक बड़ी परियोजना के लिए एक महत्वपूर्ण विचार हो सकता है जो संकलन में लंबा समय लेता है।
orodbhen

23

उन लोगों के लिए जो यह देखना चाहते हैं कि हम अपने स्थिरांक को परिभाषित करने के लिए एक कक्षा का उपयोग कैसे कर सकते हैं और हमें जहां आवश्यकता हो वहां कॉल कर सकते हैं।

Constant.java

    package org.nrum.nrum;

/**
 * Created by rajdhami on 5/23/2017.
 */
public class Constant {
    public static final String SERVER = "http://192.168.0.100/bs.dev/nrum";
//    public static final String SERVER = "http://192.168.100.2/bs.dev/nrum";
    public static final String API_END = SERVER + "/dataProvider";
    public static final String NEWS_API = API_END + "/newsApi";
    public static final String BANNER_API = API_END + "/bannerApi/lists";
    public static final String NOTICE_API = API_END + "/noticeApi/lists";
    public static final String UPLOAD_PATH = SERVER + "/uploads";
    public static final String UPLOAD_PATH_BANNER = UPLOAD_PATH + "/company_1/banner";
    public static final String UPLOAD_PATH_NEWS = UPLOAD_PATH + "/company_1/news";
    public static final int BANNER_TRANSITION_DURATION = 5000;
    public static final int NOTICE_BUTTON_BLINK_DURATION = 5000;
    public static final int BANNER_FETCH_LIMIT = 3;
}

अब हम निम्नलिखित तरीकों से स्थिरांक का उपयोग कर सकते हैं।

Constant.NOTICE_BUTTON_BLINK_DURATION

1
सबसे अच्छा तरीका पूछा गया था !!
shadygoneinsane

@ यदि मैं अलग-अलग भूमिका का उपयोग करना चाहता हूं, तो अलग-अलग URL, कृपया मदद करें, इससे पहले कि मैं urs की तरह ही उपयोग कर रहा था
कुलदीप सिंह

11

सामान्य स्थिति में:

  • XML मानों में लेआउट फ़ाइल में एक्सेसबिलिटी और जावा फ़ाइल में कॉन्स्टेंट पर प्रकट फ़ाइल का लाभ है
  • XML फ़ाइल में कॉन्स्टेंट पर मल्टी लैंग्वेज सपोर्ट के लिए XML वैल्यू का फायदा है

1
धन्यवाद u धीरेश, फिर मैं समझ गया, यह xml में विन्यास रखने के लिए बहुत उपयोगी है जो दोनों लेआउट्स, मैनिफ़ेस्ट और जावा द्वारा एक्सेस किया जाता है
Jayabal

2

अपने ऐप कोड से UI स्ट्रिंग्स निकालने और उन्हें बाहरी फ़ाइल में रखने के लिए हमेशा एक अच्छा अभ्यास है। एंड्रॉइड प्रत्येक एंड्रॉइड प्रोजेक्ट में संसाधन निर्देशिका के साथ इसे आसान बनाता है।

http://developer.android.com/training/basics/supporting-devices/languages.html


सवाल यह है कि स्थिरांक का उपयोग केवल जावा कोड द्वारा आंतरिक रूप से किया जाता है। यह एक अलग परिदृश्य है। उपयोगकर्ता इंटरफ़ेस से संबंधित पाठ टैग के विशिष्ट मामले के लिए, जैसा कि आप उल्लेख करते हैं, इसमें कोई संदेह नहीं है कि सही जगह एंड्रॉइड प्रोजेक्ट के एक्सएमएल संसाधन हैं।
सेसरगैस्टोनेक

2

मुझे लगता है कि दोनों तरह से अच्छा लगता है लेकिन बात यह है कि यह आपकी आवश्यकताओं पर निर्भर करता है।

यदि आपके XML में आपके मान (वेब ​​सेवा लिंक) हैं और मान लें कि आपके मूल्यों (वेब ​​सेवा लिंक) में कोई परिवर्तन है, तो आप आसानी से केवल XML फ़ाइल में बदल सकते हैं।

लेकिन अगर आप स्टैटिक वैरिएबल के रूप में क्लासेस के अंदर उपयोग करते हैं तो आपको सभी क्लास फाइल्स में बदलाव करना होगा।

तो मेरा सुझाव है कि स्रोत फ़ाइल से अलग स्थिरांक और संसाधन में डाल दिया और इसे तक पहुँचने ..


1
"आप केवल XML फ़ाइल में आसानी से बदल सकते हैं" यह एक जावा फ़ाइल में बदलना जितना आसान है, और दोनों ही मामलों में आपको परियोजना को फिर से बनाने की आवश्यकता होगी, इसलिए मुझे नहीं लगता कि यह एक अंतर है, इसे एक फायदा होने दें।
फ्रां मरोज़ा

0

मुझे खुशी है कि किसी ने यह पूछा ... प्लस एक!

परियोजना संसाधनों को संदर्भ तक पहुंच की आवश्यकता होती है, जो स्थिर तरीकों में उपलब्ध नहीं है (जब तक कि आप इसे आदि में पास नहीं करते हैं), लेकिन हमेशा गतिविधि में उपलब्ध - संसाधनों और लेआउट के बीच एक अधिमान्य संबंध प्रतीत होता है। ऐप चर और स्थिरांक के लिए जिन्हें स्थिर विधियों में संसाधित किया जा सकता है, मैं एक सार वर्ग बनाता हूं और अन्य सभी प्रोजेक्ट क्लास फ़ाइलों में एक स्थिर आयात (इस स्थिरांक वर्ग का) करता हूं।

पी वी एस

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.