मेरे पास एक activity
और एक service
वाला ऐप है। अगर मैं activity
को मारता हूं जबकि service
चल रहा है तो यह भी मार जाता है। यह मेरे लिए बहुत महत्वपूर्ण है कि सेवा मारे नहीं जाती है। यह कैसे बनाया जाए जब सिस्टम मारता है (या मैं "हालिया ऐप्स" सूची को साफ़ करके इसे मारता हूं) activity
service
अभी भी सक्रिय रहता है जब तक कि यह अपना काम पूरा नहीं कर लेता है? अग्रिम में धन्यवाद!एप्लिकेशन/गतिविधि मारे जाने पर सिस्टम हत्या सेवा से कैसे बचें
उत्तर
यह मेरे लिए बहुत महत्वपूर्ण सेवा नहीं मारा हो जाता है कि
आपका प्रक्रियाओं पर मारा जा सकता है किसी भी समय, किसी भी कारण से, उपयोगकर्ता गतिविधि (हालिया कार्य सूची, तृतीय पक्ष कार्य प्रबंधक, सेटिंग में "बल रोकें") के आधार पर या ओएस जरूरतों के आधार पर (सिस्टम रैम कम हो रहा है) के आधार पर। आप इसे रोक नहीं सकते।
आप अपनी प्रक्रिया को समाप्त करने के लिए ओएस के बाधाओं को कम करने के लिए कुछ कदम उठा सकते हैं, जैसे सेवा पर startForeground()
का उपयोग करना, लेकिन यह उपयोगकर्ता को आपके ऐप की प्रक्रिया के साथ क्या करना चाहता है।
मैं उस सेवा से एक विंडो प्रदर्शित कर रहा हूं ताकि सेवा बंद हो जाए तो विंडो गायब हो जाती है।
मुमकिन है, उपयोगकर्ता यदि उपयोगकर्ता स्पष्ट रूप से हाल ही के कार्य सूची, एक कार्य प्रबंधक, आदि आप निश्चित रूप से कर रहे हैं के अपने दस्तावेज में उन सलाह देने के लिए स्वागत करते माध्यम से आपके एप्लिकेशन से छुटकारा हो रही है गायब हो जाने की अपने विंडो चाहता है इसका कोई नकारात्मक प्रभाव होगा।
आप सेवा को एक अलग प्रक्रिया में होने के साथ प्रयोग करने के लिए भी स्वागत करते हैं। मेरी समझ यह है कि यह एंड्रॉइड 4.4 पर हालिया कार्यों की सूची में मदद नहीं करेगा, हालांकि यह एंड्रॉइड के पुराने संस्करणों पर हो सकता है। चाहे यह तीसरे पक्ष के कार्य प्रबंधकों के साथ मदद करता है शायद प्रबंधक पर निर्भर करता है, और इससे सेटिंग्स से "फोर्स स्टॉप" में मदद नहीं करनी चाहिए। इसका मतलब यह भी है कि आपको आईपीसी, सिस्टम की रैम खपत में वृद्धि होगी, जबकि आपकी मुख्य और सेवा प्रक्रियाएं चल रही हैं, आदि
ठीक है, क्या मैं दूसरी प्रक्रिया में सेवा शुरू कर सकता हूं ताकि जब उपयोगकर्ता मेरी आवेदन प्रक्रिया को मारता है तो मेरी सेवा प्रक्रिया अभी भी छूटी नहीं रहती है? – Salivan
@ सलीवान: हां, मैं बस इसके बारे में एक अद्यतन जोड़ रहा था - संपादित उत्तर देखें। – CommonsWare
विंडो में एक करीबी बटन है ताकि उपयोगकर्ता इसे दबाकर उस विंडो से छुटकारा पा सके। यह भी सेवा बंद कर देता है। लेकिन क्या उपयोगकर्ता द्वारा गतिविधि की हत्या के बाद सेवा जीवित रहने का कोई तरीका है? – Salivan
आप अपने सेवा में onStartCommand
से START_STICKY
लौटने की कोशिश कर सकते हैं:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
handleCommand(intent);
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
मैंने पहले ही ऐसा किया है लेकिन इससे कोई मदद नहीं मिलती क्योंकि मुझे चाहिए कि 'सेवा' रुक जाएगी। मैं उस 'सेवा' से एक विंडो प्रदर्शित कर रहा हूं, इसलिए यदि 'सेवा' बंद हो जाती है तो विंडो गायब हो जाती है। खिड़की को फिर से बनाने के लिए यह समझ में नहीं आता है। मुझे स्क्रीन पर रहने के लिए इसकी आवश्यकता है, भले ही 'गतिविधि' मारे जाए, इसलिए मुझे उस सेवा को अनदेखा रखने की आवश्यकता है जब तक कि खिड़की बंद न हो जाए। – Salivan
आप 'startForeground' आज़मा सकते हैं। – Sipka
मुझे नहीं लगता कि यह मदद कर सकता है क्योंकि जब उपयोगकर्ता "हालिया ऐप्स" सूची को साफ़ करता है तो मैं 'सेवा' को मारने से बचना चाहता हूं। सिस्टम द्वारा नहीं। – Salivan
क्या आप एक बाध्य सेवा चला रहे हैं? यदि ऐसा है, तो अंतिम क्लाइंट गतिविधि डिस्कनेक्ट होने पर सिस्टम इसे मार देगा (टर्मिनेट)। यहाँ reference page से blurb है:
पिछले ग्राहक सेवा से unbinds करता है, सिस्टम सेवा नष्ट कर देता है (जब तक सेवा भी startService द्वारा शुरू किया गया())।
बाध्य सेवा नहीं है और सिस्टम नहीं है। मैं चाहता हूं कि उपयोगकर्ता "हालिया ऐप्स" सूची को साफ़ करने के बाद और गतिविधि को मारने के बाद सेवा जीवित रहे। – Salivan
- 1. मारे गए सेवा पर DeadObjectException से कैसे निपटें?
- 2. सिस्टम से कैसे बचें। Runtime.InteropServices.COMException?
- 3. गिट रिबेस हत्या मर्ज करने से कैसे बचें?
- 4. ग्रहण पर रिमोट सिस्टम एक्सप्लोरर ऑपरेशन से कैसे बचें?
- 5. आईओएस - ऐप मारे जाने पर मौन पुश अधिसूचनाओं को संभालना
- 6. क्या माता-पिता की हत्या होने पर फोर्क() के साथ बनाई गई बाल प्रक्रियाएं स्वचालित रूप से मारे जाती हैं?
- 7. संगीत सेवा शुरू होने पर भी मारे गए फोरग्राउंड
- 8. मारे गए एंड्रॉइड सेवा और स्थैतिक चर
- 9. सेवा हमले से इनकार करने से बचें
- 10. फाइल सिस्टम फ़ाइल नाम से बचें? सी #
- 11. ऐप की हत्या के बाद पृष्ठभूमि में धागा कैसे चलाएं
- 12. एएलटी कुंजी दबाए जाने से कैसे बचें मेरे जीयूआई
- 13. गतिविधि के मारे जाने के बाद टुकड़े बने रहें और
- 14. हत्या बच्चे प्रक्रिया जब अजगर
- 15. आईफोन निरंतर मतदान वेब सेवा से बचें?
- 16. valgrind "हत्या" संदेश
- 17. CreateFileMapping, MapViewOfFile, सिस्टम मेमोरी को पकड़ने से कैसे बचें
- 18. मैं अपने एंड्रॉइड ऐप/सेवा को टास्क मैनेजर से "मारे" होने से कैसे रोक सकता हूं?
- 19. गलत लॉगिन प्रमाण-पत्र प्रदान किए जाने पर एंड्रॉइड में httpsURLConnection.getInputStream() से कैसे बचें?
- 20. त्रुटि: सेवा सिस्टम। Windows.Forms.Design.IEventHandlerService पहले से ही सेवा कंटेनर
- 21. लॉगऑनसर -> सिस्टम सेवा से CreateProcessAsUser
- 22. NoRouteToHostException से कैसे बचें?
- 23. पैरामीटर से कैसे बचें?
- 24. फर्श पर कॉल से बचें()
- 25. ऐप बिलिंग सेवा में कई बार मारे गए
- 26. पायथन हत्या धागा
- 27. svn से कैसे बचें: उप-फ़ोल्डर्स पर mergeinfos?
- 28. एचटीएमएल से कैसे बचें?
- 29. बैश: $ @ से कैसे बचें?
- 30. Django प्रवासन की हत्या
क्या आप वाकई डेस्ट्रॉय में या कहीं भी अपने गतिविधि कोड में सेवा को नष्ट नहीं करते हैं? –
हाँ मुझे यकीन है क्योंकि मैं लॉग में देखता हूं कि 'सेवा' चल रहा है और जब मैं "हालिया ऐप" सूची को साफ़ करता हूं तो' सेवा 'तुरंत मार जाती है और फिर पुनरारंभ होती है क्योंकि मैंने 'START_STICKY' टैग सेट किया है। – Salivan
ओह, मैं तुम्हें मिला, आप एक अलग बात के बारे में पूछ रहे थे। लेकिन हाँ, मुझे इसके बारे में भी यकीन है। मैं इसे 'गतिविधि' के कोड में मैन्युअल रूप से नष्ट नहीं करता हूं। लेकिन, दूसरी तरफ, मेरी 'गतिविधि' में ओवरड्रिन 'ऑनस्ट्रोय()' विधि भी नहीं है, तो हो सकता है कि यह उस विधि में डिफ़ॉल्ट रूप से सभी संबंधित सेवाओं को मारने के लिए सेट हो? – Salivan