2010-12-17 5 views
8

मैं APK में एक सेवा शुरू करना चाहता हूं।क्या मैं गतिविधि या रिसीवर के बिना सेवा शुरू कर सकता हूं?

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <service android:name =".TestServcie"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </service> 
    </application> 

कोई भी विचार:

मैं निम्नलिखित के रूप में उपयोग करने की कोशिश की?
धन्यवाद

+0

तो क्या मैं इसे लेता हूं यह काम नहीं करता है? (ऐसा नहीं है क्योंकि आपने सेवा गलत वर्तनी की है?) क्या कुछ भी घटित होता है? बीटीडब्ल्यू, क्या आप उपयोगकर्ता को किसी भी प्रतिक्रिया की योजना बना रहे हैं कि सेवा शुरू हुई? – EboMike

उत्तर

11

नहीं आप नहीं कर सकते।

एक सरल गतिविधि बनाएं जो सेवा शुरू करती है और उपयोगकर्ता को कुछ प्रतिक्रिया प्रदान करती है (उन्हें बताने के लिए कि सेवा उदाहरण के लिए शुरू हुई है) और उस गतिविधि को मुख्य/लॉन्चर इरादे से सेट करें।

+3

कोई इस भयानक और अनुपयोगी उत्तर को हटा देता है और दूसरे को ऊपर रखता है। – Arijoon

+0

@ एरिजून: आप 'सेवा' का प्रस्ताव कैसे शुरू करते हैं? एंड्रॉइड v3.x से आगे किसी ऐप घटक को शुरू करना संभव नहीं है जब तक कि उपयोगकर्ता ने मैन्युअल रूप से लॉन्चर से ऐप शुरू नहीं किया - इसका मतलब है 'गतिविधि' शुरू करना। सबसे महत्वपूर्ण बात यह है कि उपयोगकर्ताओं की अनुमति के बिना ऐप घटकों को शुरू करने के लिए यह एक खराब डिज़ाइन होगा। साथ ही, दूसरा उत्तर सही हो सकता है लेकिन यह तब तक असफल हो जाएगा जब तक कि उपयोगकर्ता द्वारा 'गतिविधि' शुरू नहीं की जाती है (जिससे संकेत मिलता है कि वे उनकी अनुमति देते हैं)। यदि ऐप मैन्युअल रूप से रुक गया है और मैन्युअल रूप से फिर से शुरू नहीं किया गया है या यदि ऐप एसडी कार्ड पर इंस्टॉल किया गया है तो यह भी असफल हो जाएगा। – Squonk

+1

इंस्टॉल करने के बाद ** केवल एक गतिविधि ** चलाने की आवश्यकता है। इसके बाद आप बूट पर सेवा शुरू कर सकते हैं। आपके उत्तर का पहला भाग सही है हालांकि बाकी का सहायक नहीं है। उपयोगकर्ता से पूछे बिना पृष्ठभूमि में बूट पर Viber जैसी कई सेवाएं चलती हैं। – Arijoon

29

आप ब्रॉडकास्ट रिसीवर लिख सकते हैं और इरादे आने के बाद सेवा चला सकते हैं। उदाहरण के लिए बूट डिवाइस या अन्य इरादे के बाद आपको आवश्यकता है।

<receiver android:name=".StartupReceiver"> 
    <intent-filter> 
    <action android:name="android.intent.action.BOOT_COMPLETED"/> 
    <category android:name="android.intent.category.HOME"/> 
    </intent-filter> 
</receiver> 
+0

मुझे लगता है कि यह जवाब सही है। यह वर्णन करता है कि उपयोगकर्ता से कार्रवाई के बिना सेवा कैसे शुरू करें और मुझे लगता है कि लेखक यही खोज रहे थे। – Undo

+0

जितना मैं Google, ऐसा लगता है कि रिसीवर पंजीकृत होने के लिए उपयोगकर्ता को वास्तव में एप्लिकेशन को चलाने की ज़रूरत है। – Pijusn

+1

इस मामले में, रिसीवर AndroidManifest.xml के माध्यम से पंजीकृत हैं।दूसरे शब्दों में जब वे ऐप इंस्टॉल करते हैं तो वे पंजीकृत होते हैं। – Qlimax

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