2015-06-18 7 views
6

मैं एंड्रॉइड विकास के लिए बिल्कुल नया हूं, इसलिए मेरे पास एंड्रॉइड प्रोजेक्ट/कोड डिज़ाइन के बारे में कुछ प्रश्न हैं।एंड्रॉइड पैकेज संगठन

  1. क्या लोग आम तौर पर एक अलग वर्ग/कक्षाओं में एपीआई कॉल को विभाजित करते हैं? या आप उन्हें ऑब्जेक्ट के भीतर ही बुलाते हैं?
  2. पैकेज केवल उप-निर्देशिका हैं? जो मैं समझता हूं, उससे केवल प्रोग्रामर के लाभ के लिए संगठनात्मक उपकरण के रूप में उपयोग किया जाता है।

मुझे पता है कि ये प्रश्न कुछ हद तक व्यक्तिपरक हैं, लेकिन मुझे दिलचस्पी है कि अन्य डेवलपर अपना कोड कैसे व्यवस्थित करते हैं। धन्यवाद!

उत्तर

5

विज्ञापन पैकेज संगठन - मैं एंड्रॉइड के लिए दो साल के लिए अनुप्रयोग विकसित करता हूं और मैंने एंड्रॉइड सिनेसी के समान स्रोत का आयोजन किया है।

com.example.android 
.car 
    CarActivity 
    CarListFragment 
    CarDetailFragment 
    CarListAdapter 
    ... 
.route 
    RouteActivity 
    RouteListFragment 
    RouteDetailFragment 
    RouteListAdapter 
    ... 
.utils 
.services 
etc. 

मैं अभी तक दो बार नहीं सोच रहा हूँ क्या सभी "मॉड्यूल" (उदा डेटा इकाई) में हो shoul: लेकिन इस सप्ताह मैं सोच अगर यह, पैकेज के लिए अधिक उपयुक्त आवेदन मॉड्यूल के रूप में था होगा उदाहरण के लिए शुरू कर दिया। लेकिन मैं इस बदलाव के बारे में क्यों सोच रहा हूं? क्योंकि मध्यम या बड़ी परियोजनाओं में एक पैकेज में बहुत अधिक गतिविधियां/टुकड़े/आदि हैं - और यह मुझे भ्रमित कर रहा है - मैं इसे विशेष रूप से अन्य डेवलपर्स से प्राप्त बड़ी परियोजनाओं के लिए देखता हूं।

और एक और लाभ मॉड्यूल पैकेज में विभाजित किया जा सकता है - जावा पैकेज-विधियों की निजी दृश्यता।

मुझे अभी तक यह तय नहीं हुआ है कि इस या उस संस्करण का उपयोग करना है, लेकिन मुझे लगता है कि छोटी परियोजनाओं के लिए परवाह नहीं है और मध्यम या बड़ी परियोजना के लिए यह मॉड्यूल के रूप में बेहतर विकल्प पैकेज हो सकता है।

1

मुझे अपने एंड्रॉइड प्रोजेक्ट्स में प्रत्येक वर्ग के लिए अलग-अलग फाइलें पसंद हैं, एसिंक टास्क का एकमात्र अपवाद है। इस कई जावा फाइलों का मतलब है कि आपको मूल पैकेज की तुलना में अधिक पैकेज होना चाहिए। मैं प्रत्येक प्रकार के मुख्य वर्ग के लिए एक पैकेज के साथ समाप्त हुआ। प्रत्येक वर्ग का नाम इसके प्रकार से समाप्त होता है।

com.example

गतिविधियों

सभी गतिविधियों शामिल हैं। कक्षाएं अंत में गतिविधि के साथ नामित हैं। इस तरह, आप तुरंत पता कर सकते हैं कि जावा कोड पढ़ने के दौरान यह क्या है जिसमें उसका पूरा पैकेज नाम नहीं है।

एडेप्टर

सभी एडाप्टर शामिल हैं।

प्रमाणक

में एक उपयोगकर्ता पर हस्ताक्षर करने से संबंधित किसी भी वर्ग शामिल हैं। मैं एक स्थानीय खाता बनाने और सभी संबंधित वर्गों होने एक साथ बहुत आसान है।

डेटा

ऐसे ContentProvider और SQLiteHelper के रूप में डेटा प्रबंधन से संबंधित सभी वर्गों शामिल हैं।

data.migrations

मेरी SQLite माइग्रेशन के सभी शामिल हैं। मैंने माइग्रेशन के लिए एक वर्ग बनाया, इसके बारे में यहां पढ़ा, और उन्हें सभी को इस पैकेज में रखा।

टुकड़े

सभी टुकड़े शामिल हैं।

सहायकों

सहायक कक्षाएं शामिल हैं। एक सहायक वर्ग एक कोड रखने के लिए एक जगह है जो एक से अधिक स्थानों में उपयोग किया जाता है। उदाहरण के लिए मेरे पास डेटहेल्पर है। अधिकांश विधियां स्थैतिक हैं।

इंटरफेस

सभी इंटरफेस शामिल हैं।

मॉडल

सभी स्थानीय मॉडल शामिल हैं। एक HTTP एपीआई से समन्वयित करते समय मैं जैक्सन का उपयोग कर जेएसओएन को इन जावा ऑब्जेक्ट्स में पार्स करता हूं। मैं इन मॉडलों में कर्सर पंक्तियों को भी खींचता हूं।

वरीयता

कस्टम प्राथमिकताओं के लिए सभी कक्षाएं शामिल हैं। वरीयताओं को बनाते समय मुझे एक कस्टम वरीयता डायलॉग के साथ-साथ एक कस्टम वरीयता श्रेणी की आवश्यकता होती है। वे यहाँ रहते हैं।

सिंक

समन्वयन से संबंधित सभी वर्ग शामिल हैं। मैं एक HTTP एपीआई से डेटा खींचने के लिए एक SyncAdapter का उपयोग करें। SyncAdapter के अतिरिक्त एक सिंक सेवा आवश्यक है, इसलिए मैंने एक पैकेज बनाया है।

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