2010-04-06 9 views
23

मैं दोनों के बीच के अंतर के रूप में उलझन में हूँ। मेरे आवेदन में मैंने अभी गतिविधि का विस्तार किया है और एप्लिकेशन पूरी तरह से काम कर रहा है, तो एप्लिकेशन का विस्तार करने का उद्देश्य क्या है?एंड्रॉइड में एप्लिकेशन को विस्तारित करता है और गतिविधि को विस्तारित करने के बीच क्या अंतर है?

क्या आप इसे एंड्रॉइड एप्लिकेशन में बनाए गए पहले श्रेणी में उपयोग करेंगे?

धन्यवाद।

उत्तर

12

एंड्रॉइड.एप.एपप्लिकेशन क्लास एप्लिकेशन-ग्लोबल स्टेटस को विस्तार और भंडारण के लिए एक वैकल्पिक सुविधा है। ऐसा करने के अन्य तरीके हैं, इसलिए अधिकांश ऐप्स इस कक्षा को कस्टमाइज़ नहीं करते हैं।

गतिविधियां हालांकि आपके आवेदन के हर प्रमुख चरण को परिभाषित करती हैं। गतिविधियों के बिना एक आवेदन बनाना संभव नहीं होगा। आपके पास एक मुख्य गतिविधि वर्ग होगा और इसे वास्तव में 'गतिविधि को विस्तारित' के साथ परिभाषित किया जाएगा। देखने के लिए अंतर यह देखने की जाएगी

+0

मुझे पैडेंटिक होने का मतलब नहीं है, लेकिन क्या आपका मतलब है "गतिविधियों के बिना आवेदन बनाना संभव नहीं होगा"? मैं बस इस पर पूरी तरह से स्पष्ट होना चाहता हूँ। – jcrowson

+0

अच्छी तरह से सक्रियण ऐप्स के बिल्डिंग ब्लॉक हैं। एक वेब अनुप्रयोग के लिए पृष्ठों की तरह। किसी भी ऐप में कम-से-कम एक होगा (हालांकि आप मुझे बिना किसी विजेट के एक विजेट प्राप्त करने में सक्षम हो सकते हैं)। आपके ऐप को एंट्री पॉइंट गतिविधि की आवश्यकता होगी। –

+0

तो क्या आप कक्षाओं को शुरू कर सकते हैं जो आवेदन का विस्तार करते हैं, इरादे का उपयोग करने वाली गतिविधियां शुरू करने के समान? – jcrowson

5

सबसे अच्छा तरीका वर्ग पदानुक्रम

Activity

java.lang.Object 
    ↳ android.content.Context 
     ↳ android.content.ContextWrapper 
      ↳ android.view.ContextThemeWrapper 
       ↳ android.app.Activity 

और Application

java.lang.Object 
↳ android.content.Context 
    ↳ android.content.ContextWrapper 
     ↳ android.app.Application 

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

आप जहां

AppController extends Application 
1

बस पिछले जवाब में जोड़ने के लिए के रूप में

<application 
    android:name="icom.osfg.test.app.AppController" 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/MyTheme" > 
    <!-- all the activities goes here --> 
</application> 

इस प्रकार अपने स्वयं के कस्टम आवेदन वर्ग का उपयोग कर सकते हैं।

Application कक्षा एक सिंगलटन होगी जो आपके ऐप को जीवित रहने तक लाइव रहेगी।

आप अपने Application विस्तारित वर्ग में वैश्विक घटकों को प्रारंभ कर सकते हैं क्योंकि यह आपकी प्रक्रिया मरने तक तब तक टिकेगा जब आप सामान्य Activitylifecycle से संभाल नहीं लेना चाहते हैं।

उदाहरण के लिए, तीसरे पक्ष के पुस्तकालयों की शुरुआत: पार्स, कैनरीलीक, क्रैशलिटिक्स।

public class App extends Application { 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     Parse.initialize(this); 
     LeakCanary.install(this); 
     Fabric.with(this, new Crashlytics()); 
    } 
} 
संबंधित मुद्दे