2011-02-10 7 views
5

में गतिविधि शुरू हुई है या नहीं, मेरे पास ऐसी सेवा है जो कुछ पृष्ठभूमि कर्मचारी कर रही है, तो मुझे गतिविधि को संसाधित करने वाले कुछ परिणामों को दिखाने वाली गतिविधि शुरू करने की आवश्यकता है। लेकिन संभावना है कि सेवा सेवा से कई बार शुरू की जाती है। अब, मैं केवल इस गतिविधि को शुरू करना चाहता हूं अगर यह पहले से सक्रिय नहीं है।जांचें कि सेवा

संभावना क्या है और यह कैसे करें? और अगर आपको कोई फर्क नहीं पड़ता तो नमूना कोड अच्छा होगा।

धन्यवाद !!

उत्तर

2

आपको एंड्रॉइडManifest.xml फ़ाइल में singleTask पर अपनी गतिविधि के launchMode को बदलना चाहिए।

इस संपत्ति के लिए डिफ़ॉल्ट मान standard है, जो किसी भी संख्या को चलाने के लिए अनुमति देता है।

"सिंगल टास्क" और "सिंगल इंस्टेंस" गतिविधियां केवल एक कार्य शुरू कर सकती हैं। वे हमेशा गतिविधि ढेर की जड़ पर रहते हैं। इसके अलावा, डिवाइस एक समय में गतिविधि का केवल एक उदाहरण रख सकता है - केवल एक ऐसा कार्य। [...]

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

बाहर एक अधिक विस्तृत विवरण के लिए Android Developers' Guide चेक (उद्धरण वहाँ से भी है)

<activity android:name=".activity.YourActivity" 
    android:launchMode="singleTask" 
    android:alwaysRetainTaskState="true" 
    android:clearTaskOnLaunch="false" 
    android:finishOnTaskLaunch="false"> 
    <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 
संबंधित मुद्दे