मेरा ऐप अनिवार्य रूप से एक पृष्ठभूमि सेवा कभी कभी मुख्य द्वारा चलाए जा रहे एक सॉकेट सर्वर की खोज सक्षम बनाने के उद्देश्य के लिए एक NSD
सेवा (Bonjour
सेवा) रजिस्टर करने की जरूरत है पृष्ठभूमि सेवा (ऐप द्वारा संचालित उर्फ)।एंड्रॉयड: एक Bonjour सेवा को रोकने से के बाद माता-पिता की प्रक्रिया से बाहर निकलने के चलते रहने दिया abrubtly
अगर मैं सही ढंग से Android Bonjour Service doc पढ़ रहा हूँ, यह कैसे आप Bonjour
सेवा (संक्षिप्तता के लिए संक्षिप्त) शुरू होता है:
mNsdManager = Context.getSystemService(Context.NSD_SERVICE);
mDiscoveryListener = new NsdManager.DiscoveryListener()
mNsdManager.discoverServices(
SERVICE_TYPE, NsdManager.PROTOCOL_DNS_SD, mDiscoveryListener);
... और यह कैसे आप इसे रोकना है:
mNsdManager.unregisterService(mRegistrationListener);
यहां भाग मैं अपने सिर को चारों ओर लपेट नहीं सकता: यदि मुख्य सेवा अचानक नीचे जाती है, तो Bonjour
सेवा जो दुर्घटना के समय पंजीकृत थी, तब भी चल रही है, भले ही इसका कोई उद्देश्य न हो (सॉकेट सर्वर यह डिस्को में मदद करता है ver अब चारों ओर नहीं है)।
मैं मुख्य सेवा को पुनरारंभ करते समय ज़ोंबी Bonjour
सेवाओं को साफ़ नहीं कर सकता क्योंकि mRegistrationListener
सेवा प्रारंभ में पंजीकृत थी, अब भी आसपास नहीं है।
मुझे संदेह है कि मैं गलत दृष्टिकोण ले रहा हूं: मैं कैसे सुनिश्चित करूं कि मैं मुख्य सेवा दुर्घटनाग्रस्त होने के बाद ज़ोंबी Bonjour
सेवाओं की गड़बड़ी नहीं छोड़ूं?
धन्यवाद, 'UncaughtExceptionHandler' के साथ बेजोड़ अपवादों को पकड़ना संभवतः जाने का तरीका है - हालांकि मैं मुख्य प्रक्रिया के भीतर बोनजोर सेवा चलाने का कोई तरीका ढूंढ रहा था (मुझे आश्चर्य है कि एंड्रॉइड कार्यान्वयन उस विकल्प की अनुमति नहीं देता है) । यदि अगले कुछ दिनों में कुछ भी बेहतर नहीं होता है तो मैं आपका जवाब स्वीकार करूंगा। – Hugo
मैं सहमत हूं, आपको लगता है कि इसे संभालने का एक उचित तरीका है। मुझे सिद्धांत का समर्थन करने के लिए कोई दस्तावेज नहीं मिला, लेकिन यह ओएस द्वारा संभाला जा सकता है। हो सकता है कि Google सोचता है कि लोग ऐसा करने के बारे में सोच नहीं सकते हैं, इसलिए उन्हें स्वचालित रूप से इसे संभालना चाहिए! –
धन्यवाद @ थ्रिल, मेरे लिए काम की गई सेवा को अनधिकृत करने के लिए 'UncaughtExceptionHandler' का उपयोग करके (मैंने सेवा के पंजीकरण के कुछ सेकंड बाद सेवा को क्रैश करके सफलतापूर्वक परीक्षण किया, एक अलग धागे में चल रहे डेमॉन टाइमर का उपयोग करके) – Hugo