2013-08-06 8 views
19

फ़ाइलों को व्यवस्थित करने के लिए सबसे अच्छा तरीका है, मैं अपना पहला एंड्रॉइड ऐप बना रहा हूं, और यह पहले से ही थोड़ा गन्दा हो गया है। मैं सूची/विस्तार पैटर्न का उपयोग कर रहा हूं क्योंकि वे परिस्थितियों में फिट हैं, लेकिन क्योंकि मैं मोबाइल और टैबलेट दोनों के लिए विकास कर रहा हूं, यह हाथ से थोड़ा सा हो रहा है। प्रत्येक स्क्रीन के लिए (एक स्क्रीन होने की सूची/विवरण), चार फाइलें बनाई जाती हैं। ListActivity, ListFragment, DetailActivity, DetailFragment। अभी तक चार स्क्रीन होने के बाद, और शाब्दिक रूप से प्रोजेक्ट शुरू करना, मेरे पास 12 फाइलें हैं, साथ ही एक डेटाबेस तालिका के लिए तीन सहायक फाइलें हैं।एंड्रॉइड प्रोजेक्ट:

मैं जो पूछ रहा हूं, यह व्यवस्थित करने का सबसे अच्छा तरीका क्या है? मैं एंड्रॉइड स्टूडियो का उपयोग कर रहा हूं, और ऐसा लगता है कि मैं फ़ाइलों को अलग-अलग पैकेजों में रखे बिना फ़ोल्डर्स में सॉर्ट नहीं कर सकता। तो क्या मैं com.domain.app.screen1 जैसे कुछ करता हूं। (Fragments | क्रियाएँ), com.domain.app.screen2। (Fragments | क्रियाएँ) और इसी तरह? या क्या मैं बस इसके साथ रखता हूँ? या यह करने का एक बेहतर तरीका है?

अगर मैं स्पष्ट नहीं कर रहा हूँ, बस मुझे पता है और मैं जहाँ तक मुझे पता के रूप में यह स्पष्ट करने के लिए

+0

मैं अनुशंसाओं के बारे में सोचने की भी सिफारिश नहीं करता जब तक कि आप केवल गतिविधियों का उपयोग करके कम से कम दो अलग-अलग ऐप्स नहीं कर लेते। –

+0

मैं टुकड़ों का उपयोग नहीं करूँगा, लेकिन चूंकि मैं टैबलेट एप के साथ शुरू करने जा रहा हूं, इसलिए सूची/विस्तार प्रवाह के अलावा कुछ भी मेरे उद्देश्यों के लिए बेवकूफ लगता है। मैं उन्हें लटका रहा हूं, यहां तक ​​कि उन्हें संचार भी कर रहा हूं, यह सिर्फ मैं उन्हें व्यवस्थित कैसे कर सकता हूं। वह और एंड्रॉइड स्टूडियो स्वचालित रूप से टुकड़े और गतिविधियां बनाता है, इसलिए यह –

उत्तर

11

कोशिश करता हूँ, वहाँ कोई सम्मेलन है, लेकिन यहाँ आप कैसे रख सकते हैं का एक उदाहरण है आपके संकुल में फाइल:

  • mainPackage
    • LauncherFragment
    • LauncherActivity
    • MyApplication
  • uiPackage
    • DetailsFragment
    • DetailsActivity
    • OtherTabletFragment
  • viewPackage
    • कस्टम दृश्य
  • databasePackage
    • MainContentProvider
    • MainDBHelper
    • SecondContentProvider
    • SecondDBHelper
  • dataPackage
    • CustomAdapter
  • utilsPackage
    • xmlUtils
    • textUtils

और कई अन्य। आप android परियोजनाओं को GitHub पर खोज सकते हैं और एक नज़र डालें।

+5

इतना कठिन नहीं है [यहां ऐसी संरचना का एक अच्छा उदाहरण है] (https://github.com/owncloud/android/tree/master/src/com/owncloud/ एंड्रॉइड) –

+0

अच्छा उदाहरण, लिंक – buzeeg

+0

के लिए धन्यवाद यह पूरी तरह गलत/बेकार है ... –

21

अच्छा @Eric ओएस्ट्रिच द्वारा के बारे में बताएं:

बड़े Android एप्लिकेशन के लिए एक मध्यम लेखन कोड संरचना की आवश्यकता है। हमारी नवीनतम एंड्रॉइड डेवलपमेंट प्रोजेक्ट बनाने में, मैं एक ऐसी संरचना में आया जिसने मुझे मदद की है।

जावा कोड:

  • com.example

    • गतिविधियों

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

    • एडेप्टर

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

    • प्रमाणक

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

    • डेटा

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

    • data.migrations

    मेरी SQLite माइग्रेशन के सभी शामिल हैं।

    • टुकड़े

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

    • सहायकों

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

    • इंटरफेस

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

    • मॉडल

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

    • वरीयताओं

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

    • सिंक

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

लेआउट:

  • गतिविधि लेआउट नाम के साथ activity_
  • एडाप्टर लेआउट पंक्ति नाम row_ के साथ शुरू शुरू
  • टुकड़ा लेआउट नाम fragment_ के साथ शुरू
+2

यह स्वीकार किया जाना चाहिए। –

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