2010-08-17 14 views
10

को पूरा करने के बाद चलने वाले राज्य में बनी हुई है, एक आवेदन पर काम करते हुए मैंने देखा कि थ्रेड गिनती हर समय बढ़ती रहती है असिंक टास्क थ्रेड कुछ कारणों से खुला रहता है (मुझे यकीन है कि वे प्रसंस्करण और बाहर निकल गए हैं) मुझे नहीं पता कि क्यों मैं इस प्रकार के अधिक धागे बना रहता हूं और वे अनिश्चित काल तक चलते रहते हैं। क्या यह सत्यापित करने का कोई तरीका है कि ये धागे जटिलता पर समाप्त हो गए हैं? क्या AsyncTasks थ्रेड के साथ खुले remaing के साथ कोई ज्ञात समस्या है?एंड्रॉइड AsyncTask

इस चलाते समय:

public class DoNothingTask extends AsyncTask<Void, Void, Void> { 

     @Override 
     protected Void doInBackground(Void... params) { 
      // TODO Auto-generated method stub 
      return null; 
     } 

    } 

मैं debbuger में हर बार के लिए एक नया धागा देखना मुझे क्या new DoNothingTask().execute(null); folows रूप

Thread[<ThreadNumber>AsyncTask#1](running)

, मेरे सवाल क्यों है क्या यह? मेरा एप्लिकेशन AsyncTask पर आवंटित करता है और मेरे पास एक नया धागा नहीं बनाया जा सकता है और प्रत्येक कार्य के बाद जीवित रह सकता है।

धन्यवाद, कुलदेवता

उत्तर

10

मैं भी इस पर मेरे सिर की पिटाई की गई थी, और बस (ठीक है, इसे और अधिक एक जवाब से व्याख्या दी गई है) इस जवाब में आए:

CommonsWare बताते हैं:

AsyncTask एक थ्रेड पूल का प्रबंधन करता है , ThreadPoolExecutor के साथ बनाया गया। इसमें 5 से 128 धागे होंगे। यदि 5 से अधिक धागे हैं, तो उन अतिरिक्त धागे हटाए जाने से पहले लगभग 10 सेकंड तक चिपके रहेंगे। (ध्यान दें: ये आंकड़े वर्तमान में दिखाई देने वाले ओपन सोर्स कोड के लिए हैं और एंड्रॉइड रिलीज द्वारा भिन्न होते हैं)।

अकेले AsyncTask थ्रेड छोड़ दें, कृपया।

स्रोत प्रश्न: AsyncTask threads never die

-2

आप का उपयोग

thread.join 

सुनिश्चित करें कि एक धागा पूरा करता है होना करने के लिए करना चाहिए। क्या तुम यह कर रहे हो

+3

न लगता है कि यह AsyncTask के लिए लागू है()। – totem

1

मुझे यकीन नहीं है कि यह संबंधित है, लेकिन मुझे अपने अनुप्रयोगों में से एक में भी इसी तरह का मुद्दा सामना करना पड़ा।

मेरे पास एक गतिविधि है जो टाइमरटास्क धागे को प्रारंभ करती है। कार्य निर्दिष्ट अंतराल पर ठीक से निष्पादित हो जाते हैं, लेकिन कुछ निष्क्रिय समय के बाद, इन धागे की संख्या में वृद्धि हुई प्रतीत होती है (यह दर्शाता है कि धागे खुले रहते हैं और नए धागे बनते हैं)। समस्या एंड्रॉइड वीएम द्वारा मेरे एप्लिकेशन की गतिशील लोडिंग और अनलोडिंग थी। मूल धागे कभी भी मारे जाने के लिए उपयोग नहीं किए जाते थे, जहां आवेदन के हर नए लोड पर, धागा प्रारंभ होता था। यही कारण है कि मेरे आवेदन में धागे की कुल संख्या बढ़ती थी।

क्या आपके आवेदन में भी एक समान कार्यान्वयन है।

+0

नहीं, मैं AsyncTasks बनाने पर धागे नहीं बना रहा हूं जो वैसे भी एक शॉट हैं। – totem

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