2010-07-19 14 views
5

मेरे पास एक पृष्ठभूमि सेवा है जो स्थायी रूप से चलनी चाहिए। सेवा सिर्फ मेरी गतिविधि के साथ बातचीत करनी है।स्थानीय सेवा या रिमोट सेवा?

  1. सेवा अभी भी चल रही है तो मैं गतिविधि फिर से शुरू करने के लिए कैसे जांच करूं? सेवा वर्ग में स्थिर चर से बेहतर संभावना है?

  2. क्या एक अलग प्रक्रिया (सेवा जीवन समय बढ़ाने के लिए) में रिमोट सेवा का उपयोग करने का लाभ है ताकि जब गतिविधि प्रक्रिया को मार दिया जाए तो सेवा अभी भी जिंदा है?

+0

'adb bugreport' ने मुझे बताया कि मेरी सेवा बहुत ज्यादा दुर्घटनाग्रस्त हो गया और – OneWorld

उत्तर

7

मैं एक पृष्ठभूमि सेवा है जो रन स्थायी रूप से करना चाहिए है।

This is not possible। उपयोगकर्ता या एंड्रॉइड किसी बिंदु पर आपकी सेवा को मार देगा। कृपया अपने वास्तुकला पर पुनर्विचार करें।

अगर सेवा अभी भी चल रही है तो मैं गतिविधि फिर से शुरू करने के लिए कैसे जांच करूं?

आम तौर पर, आप नहीं करते हैं।

क्या सेवा कक्षा में स्थिर चर से बेहतर संभावना है?

कि अगर उपयोगकर्ता या Android आपकी सेवा बंद को मारता है काम नहीं करेगा। ताकि जब गतिविधि प्रक्रिया को मार डाला जाता है सेवा अभी भी जीवित है

लाभ ( लिए सेवा जीवन का विस्तार समय) एक अलग प्रक्रिया में एक दूरस्थ सेवा का उपयोग करने के लिए यह है?

एक दूरस्थ सेवा सेवा चलाती है या बाद की गतिविधियों नष्ट कर रहे हैं के साथ कोई संबंध नहीं है। आप startService() कॉल करते हैं, सेवा चलाया जाएगा, किसी भी गतिविधि की स्वतंत्र, जब तक:

  • आप किसी गतिविधि से stopService() फोन
  • सेवा कॉल stopSelf()
  • एंड्रॉयड सेवा
  • उपयोगकर्ता समाप्त हो जाता है समाप्त हो जाता है सेटिंग एप्लिकेशन
  • उपयोगकर्ता के माध्यम से सेवा के लिए एक "कार्य हत्यारा" के माध्यम से सेवा समाप्त हो जाता है (एंड्रॉयड 2.1 और इससे पहले, कम से कम)
+०१२३५१६४१०६१
+0

नष्ट हो गया था और क्या यह उपयोगकर्ता यदि पृष्ठभूमि सेवा अभी भी अपना काम कर रही है फिर से बाहर निकलना पर गतिविधि को सूचित करना चाहते हैं? – Sney

+0

@Snej: मुझे आपका प्रश्न समझ में नहीं आता, क्षमा करें। – CommonsWare

+0

क्षमा करें, मेरी आखिरी टिप्पणी थोड़ी गड़बड़ी हुई जब तक मुझे एहसास नहीं हुआ। सवाल यह था कि यह निर्धारित करने के लिए कि उपयोगकर्ता कब आवेदन करता है कि पृष्ठभूमि सेवा अभी भी चल रही है या मार दी गई है या नहीं। मैकर्स के उत्तर से सेवा पर एक इरादा फेंक दिया जा सकता है। लेकिन मैं यह कैसे पता लगा सकता हूं कि सेवा को पुनरारंभ किया गया था या फिर भी चल रहा है? – Sney

3

आप क्यों जानना चाहते हैं कि सेवा चल रही है या नहीं? यदि आपको इससे कुछ चाहिए तो बस Intent फेंक दें और यदि यह नहीं चल रहा है तो यह इरादे से शुरू होगा।

दूसरे प्रश्न के साथ संबंध में:

आपकी सेवा नहीं होगा "मर" जब अपनी गतिविधि बंद कर देता है।

+1

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

+0

मुझे स्नेज के समान चिंता है। – gregm

+1

@Sney: यह एक हैक है, लेकिन आप सेवा से 'Broadcasts' भेजने सबको पता आप जीवित हैं यह बताने के लिए कोशिश कर सकते हैं। – Macarse

3

startforeground() में सेवा शुरू करें। यह सेवा के समय को बढ़ाएगा।

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