2011-12-07 15 views
77

में कोई अन्य कारण नहीं है कि onStartCommand(Intent, int, int) पर दिया गया इरादा एनयूएलएल के अलावा सेवा को START_STICKY जैसे ध्वज के माध्यम से सेवा को पुनरारंभ करने के अलावा होगा?कारणों से पारित इरादा ऑनस्टार्ट कॉमांड

साथ ही, जब सिस्टम द्वारा सेवा को पुनरारंभ किया जाता है तो Intent.getAction() विधि न्यूल ... कभी-कभी देता है। इरादा न केवल getAction()

मैंने here से भी पूछा लेकिन अभी तक कोई जवाब नहीं मिला है।

अद्यतन: मार्क मर्फी के साथ चैट करने के बाद, उन्होंने सुझाव दिया कि मैं अपने बजाय सेवा START_STICKY में onStartCommand() कॉलबैक में START_REDELIVER_INTENT लौट ताकि पूरे आशय पुन: प्रारंभ करने निम्नलिखित भेजा जाता है।

मैंने शुरुआत में ऐसा नहीं किया क्योंकि मुझे चिंता थी कि अगर सेवा कुछ करने का प्रयास कर रही थी, तो उस के बीच में सेवा को पुनरारंभ किया गया था ... क्या यह पहचान जाएगा कि उसने ऐसा कुछ करना शुरू कर दिया है? मुझे लगता है कि यह तर्क है कि मुझे जिम्मेदार होना होगा :)

+12

बजाय जवाब के साथ अपने प्रश्न का संपादन, कृपया एक जवाब जोड़ सकते हैं और इसे स्वीकार तो अपने प्रश्न अनुत्तरित प्रश्नों के सेट में दिखाना बंद कर देंगे। –

+1

इसी तरह की समस्या वाले किसी व्यक्ति के लिए बस एक नोट। मैंने पाया कि आम तौर पर जब मुझे त्रुटि मिलती है कि 'intent' 'StartCommand()' पर 'शून्य' है, तो यह कुछ अन्य त्रुटि के कारण होता है जो इससे पहले लॉगकैट में दिखाई देता है। मुझे नहीं पता क्यों, लेकिन मैंने यही देखा और इसे अनदेखा करना काफी आसान है। –

+2

@ डेल विल्सन मैं चाहता हूं लेकिन यह सवाल वास्तव में हल नहीं हुआ है। जब तक मुझे एक निश्चित उत्तर प्राप्त नहीं होता है कि क्यों एक इरादा शून्य है या START_REDELIVER_INTENT (जिसे मैंने बाद में सीखा, मुझे जो चाहिए वह नहीं है, लेकिन कुछ लोगों के मुद्दों को हल करने के लिए अभी भी एक शून्य उद्देश्य से बचने के लिए क्यों नहीं है, इस प्रकार मैंने कुछ लोगों के मुद्दों को हल किया है) मैं एक जवाब स्वीकार नहीं कर सकता। – rf43

उत्तर

37

मुझे आश्चर्य है कि आने वाले झंडे की कोई चर्चा नहीं है। मैं निम्नलिखित के साथ लॉग में यह नजर रखने के लिए जा रहा हूँ:

if (null == intent || null == intent.getAction()) { 
     String source = null == intent ? "intent" : "action"; 
     Log.e (TAG, source + " was null, flags=" + flags + " bits=" + Integer.toBinaryString (flags)); 
     return START_STICKY; 
} 

अद्यतन: झंडे 0 तो वहाँ वहाँ कार्रवाई योग्य कुछ भी नहीं था। मैंने फ़ंक्शन की कोई हानि नहीं होने पर वहां शून्य की जांच छोड़ी है।

संपादित करें: ठीक है, मैंने इसे सभी स्थानों के START_STICKY के दस्तावेज़ में पाया है! "अगर सेवा में कोई लंबित प्रारंभिक आदेश नहीं दिया गया है, तो इसे शून्य उद्देश्य वस्तु के साथ बुलाया जाएगा, इसलिए आपको इसकी जांच करने के लिए सावधानी बरतनी चाहिए।" धन्यवाद -

http://developer.android.com/reference/android/app/Service.html

+1

शून्य के लिए जाँच करें। –

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