2011-06-09 13 views
12

के साथ AsyncTask का उपयोग कैसे करें मैं ThreadPoolExecutor पर थोड़ा उलझन में हूं। यहां मैं यह पूरा करने की कोशिश कर रहा हूं:ThreadPoolExecutor

मेरे पास एक सूची-दृश्य है जो बाईं ओर एक छवि आइकन के साथ पॉप्युलेट किया गया है और इसके दाईं ओर एक संक्षिप्त विवरण है। मेरे पास पहले से ही परिभाषित सभी पाठ हैं, हालांकि मैं वेब से आइकन प्राप्त करना चाहता हूं। मुझे पहले से ही पता है कि यूआरएल से छवि कैसे प्राप्त करें, हालांकि मैं आइकन छवि को पकड़ने के लिए प्रति आइकन धागे की मात्रा 'एन' नहीं करना चाहता हूं। तो मैं asynctask के लिए threadpoolexecutor पर पढ़ा और मुझे यकीन नहीं है कि इसके बारे में कैसे जाना है। क्या आप लोग मुझे सिर शुरू कर सकते हैं? क्या मुझे थ्रेडपोलेक्सएटर बनाने और इसके भीतर एसिंक्टास्क का उपयोग करना है?

मेरी सूची इस तरह है .. आइकन के बिना।

___________________________ 
[icon][a short description] 
____________________________ 
[icon][a short description] 
_____________________________ 
[icon][a short description] 
_____________________________ 
[icon][a short description] 
____________________________ 

उत्तर

8

मैं केवल AsyncTask का उपयोग करने की सलाह दूंगा और ThreadPoolExecutor के बारे में चिंता न करें, जिसके लिए हनीकॉम्ब की आवश्यकता है। AsyncTask में धागे का एक पूल है जो आपकी सभी सूची वस्तुओं के लिए पुन: उपयोग किया जाएगा। यह प्रति आइकन धागे का एक गुच्छा नहीं बनाएगा।

बस ध्यान रखें कि आपके कार्य Android 2.x पर समानांतर में चल रहे होंगे और आपके कोड के किसी भी सिंक्रनाइज़ेशन समस्याओं का ट्रैक रखने के लिए।

+0

से नीचे एपीआई स्तरों के लिए उपलब्ध नहीं है जब मैं अपने async कार्य में Log.d (TAG, "बनाया गया") करता हूं तो यह दिखाता है कि 'n' थ्रेड की मात्रा बनाई गई है। तो आप क्या कह रहे हैं कि भले ही वे बनाए गए हों, असिंक के पास इसके थ्रेड पूल को नियंत्रित करने का आंतरिक तरीका है? – HAxxor

+0

आपको अपने पास मौजूद प्रत्येक कार्य के लिए AsyncTask का एक नया उदाहरण बनाने और इसे निष्पादित करने की आवश्यकता है। आपको उन उदाहरणों का पुन: उपयोग नहीं करना चाहिए। AsyncTask एक थ्रेड पूल का प्रबंधन करता है और सभी कार्य उस पूल को साझा करते हैं। –

+4

@StevePrentice प्रलेखन के अनुसार [ThreadPoolExecutor] (http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html) एपीआई स्तर 1 के बाद उपलब्ध है। मुझे लगता है कि यह सबसे अच्छा समाधान है। –

4

आप विधि executeOnExecutor() उपयोग करने के लिए अपने स्वयं के प्रबंधक के साथ इसे शुरू करने के लिए की आवश्यकता होगी।

लगता है कि गॉथस की संख्या है, इसलिए AsyncTask के लिए पूरे पृष्ठ को ध्यान से पढ़ें।

तो हाँ, आप अपना खुद का ThreadPoolExecutor बना सकते हैं और इसे AsyncTask के साथ उपयोग कर सकते हैं।

+0

धन्यवाद बीमार इसके आगे देखो! उपयोग करने के लिए बहुत परेशान लग रहा है .. lol – HAxxor

+0

हालांकि, यह 11 – rallat

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