मुख्य गतिविधि के बिना एंड्रॉइड एप्लिकेशन लॉन्च करें और एप्लिकेशन लॉन्च करने पर सेवा शुरू करें


90

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

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

मैं सेवा शुरू करने के लिए एक पारभासी गतिविधि नहीं करना चाहता।


इस पर एक नज़र डालें [प्रश्न] [1] [१]: stackoverflow.com/questions/4468006/…
मुनीश कपूर

जवाबों:


125

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

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

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

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


2
यह मेरे आवेदन को लॉन्च करने के बाद मुझे खाली स्क्रीन देता है। ऐसा नहीं होना चाहिए ...
मेहर

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

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

सार्वजनिक वर्ग TestActivity गतिविधि का विस्तार करता है {/ ** जब गतिविधि पहली बार बनाई जाती है। * / @Override सार्वजनिक शून्य onCreate (बंडल सहेजी गई InstanceState) {super.onCreate (saveInstanceState); लॉग.आई ("गतिविधि", "शुरुआती सेवा"); startService (नई आशय (TestActivity.this, MyService.class)); समाप्त(); }}
मेहर

1
मुझे लगता है कि यह एक पुराना सवाल है, लेकिन यह किसी भी लंबे समय तक कार्य नहीं करता है। Theme.Translucent.NoTitleBar या Theme.Translucent.NoTitleBar.FullScreen में मुख्य गतिविधि विषय को बदलना अन्यथा काम करने वाले अनुप्रयोग का कारण बनता है जो कि गतिविधि स्क्रीन को संक्षेप में दिखाता है जो हमेशा एक "अनुप्रयोग का जवाब देना" संदेश देता है।
अल्जी

32

हाँ, आप ऐसा कर सकते हैं कि केवल एक बनाकर BroadcastReceiverआपके कॉल को Serviceआपके एप्लिकेशन बूट करें। यहाँ मेरे द्वारा दिया गया एक पूर्ण उत्तर है।
Android - बूट पर सेवा शुरू करें

यदि आप अपने लिए कोई आइकन / लॉन्चर नहीं चाहते हैं, तो आप वह भी कर सकते हैं, बस कोई गतिविधि न बनाएं

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

बस घोषित Serviceरूप से अपना घोषित करें ।


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

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

@ ललितपत्नी समाधान ठीक है। लेकिन मेरी सेवा शुरू नहीं होगी जब तक मैं अपना फोन बूट नहीं करता।
मेहर

4
मैं अपने ऐप को बिना सिंक, एडेप्टर को छोड़कर AndroidMenifest.xml में MAIN, LAUNCHER के शुरू नहीं कर सकता। क्या आपका जवाब वास्तव में सच है?
सूर्यघन

1
मैंने एक्शन और श्रेणी टैग के साथ इरादे फ़िल्टर को हटा दिया है। अब ऐप एंड्रॉइड स्टूडियो में नहीं चल रहा है
नौमान ऐश

11

बिना किसी गतिविधि या सेवा के ऐप बनाने का कारण होमस्क्रीन विजेट ऐप बनाया जा सकता है जिसे शुरू करने की आवश्यकता नहीं है।
एक बार जब आप एक परियोजना शुरू करते हैं तो कोई गतिविधि नहीं बनाते हैं। आपके द्वारा प्रोजेक्ट बनाने के बाद सिर्फ हिट रन। एंड्रॉयड स्टूडियो कहेंगे No default activity foundकॉन्फ़िगरेशन संपादित करें ( रन मेनू से) पर

क्लिक करें और लॉन्च विकल्प में लॉन्च मूल्य को कुछ भी नहीं पर सेट करें । फिर ओके पर क्लिक करें और ऐप को रन करें।

( चूंकि कोई लॉन्चर गतिविधि नहीं है, ऐप मेनू में कोई ऐप नहीं दिखाया जाएगा। )


धन्यवाद, यह वास्तव में मेरा मामला था। मामले में आप विन्यास संपादित नहीं दिख रहा है जैसे मैं था, चयन भागो> चलाएँ ... मुख्य मेनू से चुनें और फिर विन्यास संपादित करें ...
शाम_

6

Android स्टूडियो संस्करण 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>

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

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

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

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

ps | grep whatever

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


मुझे adb शेल से निम्नलिखित त्रुटि मिलती है: सेवा शुरू करना: Intent {cmp = com.example.wolk.myapp / .MyIntentService} त्रुटि: नहीं मिली; कोई सेवा शुरू नहीं हुई। LOGCAT से पता चलता है: एक्टिविटी मैनजर: ServiceInfo {274d8af com.example.wolk.myapp.MyIntentService
Trismegistos
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.