2012-06-06 17 views
57

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

मैं अपनी अभिव्यक्ति फ़ाइल को मुख्य गतिविधि के बिना कैसे कॉन्फ़िगर कर सकता हूं? क्या मैं बिना किसी गतिविधि के अपना ऐप लॉन्च कर सकता हूं? और मेरा ऐप लॉन्च करने पर, मेरी सेवा शुरू होनी चाहिए। क्या यह किसी भी तरह से संभव है? मैं सेवा शुरू करने के लिए पारदर्शी गतिविधियों को नहीं बनाना चाहता हूं।

अग्रिम धन्यवाद !!!

+0

को यह [सवाल] पर एक नजर है [1] [1]: http://stackoverflow.com/questions/4468006/can-i-start-a-service-without-activity -या-रिसीवर –

उत्तर

92

आपने कहा कि आप एक पारदर्शी गतिविधि का उपयोग नहीं करना चाहता था, लेकिन वह ऐसा करने के लिए सबसे अच्छा तरीका हो रहा है:

  1. अपने प्रकट में, Theme.Translucent.NoTitleBar को गतिविधि विषय निर्धारित किया है।
  2. अपनी गतिविधि के लिए लेआउट से परेशान न हों, और setContentView() पर कॉल न करें।
  3. अपनी गतिविधि के onCreate() में, startService() के साथ अपनी सेवा शुरू करें।
  4. सेवा शुरू करने के बाद finish() के साथ गतिविधि से बाहर निकलें।

दूसरे शब्दों में, आपकी गतिविधि को दिखने की ज़रूरत नहीं है; यह केवल यह सुनिश्चित कर सकता है कि आपकी सेवा चल रही है और फिर बाहर निकलें, जो आप चाहते हैं की तरह लगता है।

मैं कम से कम Toast notification दिखा रहा हूं कि उपयोगकर्ता को यह संकेत मिलता है कि आप सेवा लॉन्च कर रहे हैं या यह पहले से चल रहा है। लॉन्चर आइकन रखने के लिए यह बहुत खराब उपयोगकर्ता अनुभव है जो इसे दबाते समय कुछ भी नहीं करता है।

+1

यह मुझे अपना आवेदन लॉन्च करने के बाद खाली स्क्रीन देता है। जो कि श्ड नहीं है ... – Meher

+1

@ मेहर मैंने अभी इसका परीक्षण किया और यह मेरे लिए पूरी तरह से काम किया - मेरी सेवा शुरू हुई और मुझे कोई गतिविधि नहीं मिली , एक पल के लिए भी। कृपया अपनी गतिविधि की सामग्री को क्रिएट() पर पोस्ट करें, और हमें यह पता लगाने में सक्षम होना चाहिए कि क्या गलत है। –

+0

जब मैंने पहली बार अपना एप्लिकेशन इंस्टॉल किया तो मैं एक सेकंड में लॉन्च की गई गतिविधि और डिसैपरिंग गतिविधि देख सकता हूं। – Meher

23

हाँ आप इसे BroadcastReceiver बनाकर ऐसा कर सकते हैं जो आपके Service पर कॉल करता है जब आपका एप्लिकेशन बूट होता है। मेरे द्वारा दिया गया एक पूरा उत्तर यहां दिया गया है।
Android - Start service on boot

आप आप आवेदन के लिए किसी भी आइकन/लांचर आप कर सकते हैं कि यह भी, बस

<intent-filter> 
    <action android:name="android.intent.action.MAIN" /> 
    <category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 

के साथ किसी भी गतिविधि का निर्माण नहीं करतीं नहीं करना चाहते हैं बस की घोषणा अपने Service के रूप में सामान्य रूप से घोषित कर दिया।

+2

ऐसा लगता है कि पूछताछ बूटर पर 'सेवा' शुरू करने के साथ ठीक है, लेकिन यह जानना चाहता है कि कोई मुख्य 'गतिविधि' कैसे नहीं है, लेकिन यह सुनिश्चित करें कि लॉन्चर आइकन दबाए जाने पर 'सेवा' चल रहा है। –

+0

भी जोड़ा गया। –

+2

लेकिन ऐसा लगता है जैसे वे एक लॉन्चर आइकन चाहते हैं, जब दबाया जाता है, यह सुनिश्चित करता है कि सेवा चल रही है। आपका सुझाव लॉन्चर आइकन से छुटकारा पाता है। –

1

एंड्रॉयड स्टूडियो संस्करण 2.3

आप कुछ आसान चरणों का पालन करके एक मुख्य गतिविधि के बिना एक सेवा बना सकते हैं। आप एंड्रॉइड स्टूडियो के माध्यम से इस ऐप को इंस्टॉल करने में सक्षम होंगे और इसे एक सामान्य ऐप की तरह डीबग कर पाएंगे।

सबसे पहले, बिना किसी गतिविधि के एंड्रॉइड स्टूडियो में एक प्रोजेक्ट बनाएं। फिर अपने सेवा वर्ग बना सकते हैं और "रन" बटन (हरा तीर), तो "के बगल में नीचे अपने AndroidManifest.xml में सेवा जोड़ें

<application android:allowBackup="true" 
    android:label="@string/app_name" 
    android:icon="@mipmap/ic_launcher" 
    android:roundIcon="@mipmap/ic_launcher_round" 
    android:supportsRtl="true" 
    android:theme="@style/AppTheme"> 
    <service android:name="com.whatever.myservice.MyService"> 
     <intent-filter> 
      <action android:name="com.whatever.myservice.MyService" /> 
     </intent-filter> 
    </service> 
</application> 

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

एक बार स्थापित, सेवा चल नहीं किया जाएगा, लेकिन आप इस adb शेल कमांड के साथ इसे शुरू करने में सक्षम हो जाएगा ...

am startservice -n com.whatever.myservice/.MyService 

जांच कर सकता है इसके साथ चल रहा है ...

ps | grep whatever 

मैंने अभी तक कोशिश नहीं की है लेकिन आप शायद एंड्रॉइड स्टूडियो को सेवा भी शुरू कर सकते हैं। यह "कॉन्फ़िगरेशन संपादित करें" मेनू में किया जाएगा।

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