2012-03-29 10 views
6

Service.startForeground() बनाम NotificationManager.notify(), विभिन्न व्यवहार दें।एंड्रॉइड सर्विस .स्टार्टग्राउंड अधिसूचना आईडी विशिष्टता का सम्मान नहीं करता

जब का उपयोग कर दो अलग-अलग अधिसूचना आईडी के साथ सूचित कर दें, 2 सूचनाएँ बनाई गई हैं - अच्छा

जब startForground के साथ एक ही कर रही है, एक अधिसूचना अन्य ओवरराइड करता है - बुरा

परीक्षण डिवाइस: नेक्सस एस (2.3.6) और एसस ट्रांसफार्मर (4.0.3)।

कोई विचार मैं कैसे एक महत्वपूर्ण (अग्रभूमि) सेवा चला सकता हूं जिसमें कई (गतिशील संख्या) अधिसूचनाएं हो सकती हैं?

+0

Asus ट्रांसफॉर्मर (एंड्रॉइड 4.0.3) पर भी होता है। –

+0

किसी समस्या को खोल दिया: http://code.google.com/p/android/issues/detail?id=28011 –

उत्तर

0

अच्छा, यह सबसे अच्छा समाधान नहीं है, लेकिन आप हमेशा खारिज अधिसूचना आईडी पर अधिसूचना को "पुनः निर्दिष्ट" कर सकते हैं। उदाहरण के लिए, कहें कि आप प्रक्रिया 1 (अग्रभूमि) शुरू करें और फिर प्रक्रिया 2 (अधिसूचना प्रबंधक का उपयोग करके) शुरू करें। जब प्रक्रिया 1 समाप्त होता है, प्रक्रिया 2 के लिए अधिसूचना को खारिज करने और करने के लिए प्रक्रिया 1 के लिए अग्रभूमि सूचना अपडेट वास्तव में अब प्रक्रिया के लिए 2.

इस तरह प्रगति दिखाने के आप stopForeground() और startForeground() कॉल करने के लिए, अनुमति दे सकता है जो की जरूरत नहीं है बीच में मारने की सेवा (वास्तव में यह सच नहीं है, हालांकि)।

+0

वास्कविच, क्या होगा यदि इस संदर्भ में केवल एक ही प्रक्रिया शामिल है? और क्या आप अधिसूचना को खारिज करने के लिए अधिसूचना पर विस्तार कर सकते हैं ...? – nmxprime

+0

मेरी समझ यह है कि इससे कोई फर्क नहीं पड़ता, क्योंकि जब आप 'stopForeground()' कहते हैं, तो एंड्रॉइड अब आपकी सेवा को मार सकता है। मुझे लगता है जैसे मैंने पर्याप्त विस्तार किया; कृपया दूसरी वाक्य को दो बार फिर से पढ़ें! –

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