2011-01-10 11 views
8

मैं BroadcastReceiver का विस्तार करता हूं, और onReceive() में जो भी मुझे करना है, वह करता हूं।ब्रॉडकास्ट रिसीवर ऑन रिसीव टाइमआउट

onReceive(), एक टाइमआउट है प्रलेखन से:

वहाँ 10 सेकंड कि प्रणाली रिसीवर अवरुद्ध होने और एक उम्मीदवार विचार करने से पहले अनुमति देता है की एक समय समाप्ति

मारे जाने के लिए है

यह एक समस्या उत्पन्न करता है जब मैं डीबग मोड में हूं। मुझे 10 सेकंड से अधिक (कभी-कभी) चाहिए। अगर मैं 10 सेकंड में अपनी सभी डिबगिंग नहीं करता हूं तो मेरा कनेक्शन बंद हो जाता है और डिबगिंग बंद हो जाती है।

क्या मैं टाइमआउट बढ़ा सकता हूं या इसे डिबगिंग उद्देश्यों के लिए अक्षम कर सकता हूं?

धन्यवाद।

+0

यदि आप ऐसी सामग्री कर रहे हैं जो आपके प्रसारण रिसीवर में एक सेकंड के अंश से भी अधिक लेता है, तो आप इसे गलत कर रहे हैं। – Falmarri

+4

नीचे मेरी टिप्पणी पढ़ें। मैं DEBUG मोड के बारे में बात कर रहा हूँ। –

उत्तर

11

आदेश बल समापन से अपने अनुप्रयोग को रोकने के लिए जब तुम डीबगिंग के दौरान एक को तोड़ने बिंदु पर रोक दिए गए हैं, देव उपकरण आवेदन स्थापित करने की कोशिश और डीबग अनुप्रयोग सेटिंग जो सक्षम:

आप की सुविधा देता है डीबग पर एप्लिकेशन का चयन करें। आप एक डिबगर देते को यह निर्धारित करने की आवश्यकता नहीं है, लेकिन इस मान सेट दो प्रभाव होते हैं:

  • यह एक त्रुटि फेंक अगर आप जबकि डिबगिंग एक लंबे समय के लिए एक ब्रेकप्वाइंट पर थामने से Android पाएगा ।

विवरण के सभी यहाँ हैं: http://developer.android.com/tools/debugging/debugging-devtools.html

आप अपने onReceive विधि में जटिल कर रहे हैं, तो अपने BroadcastReceiver एक Service शुरू करने और डेटा यह onReceive के भीतर से हो जाता है साथ भेज देते हैं होने पर विचार करें। Service तब लंबी प्रसंस्करण कर सकता है।

+1

यह सही है। एक प्रसारण रिसीवर का एकमात्र उद्देश्य कुछ और करने के लिए डेटा पास करना चाहिए। – Falmarri

+1

दोस्तों, मैं आपसे सहमत हूं। तुम सही हो। एक रिलीज संस्करण में इसे इतना लंबा नहीं लेना चाहिए। लेकिन मैं DEBUG मोड में बात कर रहा हूं, जब मैं अपने कोड के माध्यम से डीबग कर रहा हूं। –

+0

इससे कोई फर्क नहीं पड़ता कि आप "DEBUG" मोड में हैं। आप अभी भी रिसीवर को किसी अन्य घटक को पास करना चाहते हैं, शायद एक सेवा के रूप में एक सेवा के रूप में अनुशंसित।यह सही डिज़ाइन है और यह डिबग और समस्या निवारण के साथ-साथ रिसीवर टाइमआउट (आपके लॉगिंग, या जो कुछ भी हो रहा है, सेवा में लंबे समय तक नहीं ले रहा है) को आसान बनाना आसान होगा। –

1

डीबग मोड में भी मुझे इस समस्या का सामना करना पड़ा। यह पता चला है कि एक और प्रसारण भेजा जा रहा था और इसे संभाला नहीं जा रहा था क्योंकि मैं मुख्य धागे पर दूसरे प्रसारण को डीबग कर रहा था। एंड्रॉइड ने मेरी प्रक्रिया को एएनआर में माना और पूरी प्रक्रिया को मार डाला।

मुझे डीबगिंग करते समय अन्य प्रसारण को कॉल करने के लिए कोड को अस्थायी रूप से संशोधित करना पड़ा।

+0

के बाद सिग्नल 3 पर प्रतिक्रिया करना आपने इसे कितना एक्साक्लिटी संशोधित किया? मुझे भी यही समस्या हो रही है। – Para

+0

@ पैरा, मैंने उस कोड को टिप्पणी की जिसने खंड में प्रसारण भेजा था, जिसे मैं ब्रेक पॉइंट से शुरू कर रहा था। –

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