2010-10-13 20 views
18

मैं एक सामान्य, वर्ग बचाने धागा है जो एक imageView और यूआरएल (http) जहां वांछित छवि फ़ाइल संग्रहीत किया जाता है की RessourceId लेता लागू करना चाहते हैं। यह छवि डाउनलोड करेगा और UiThread में ImageView के स्रोत को भर देगा।क्या मैं एंड्रॉइड में एक AsyncTask को विभिन्न प्रकार के पैरामीटर पास कर सकता हूं?

मैंने सोचा था कि AsyncTask मेरे लिए सबसे अच्छी बात होगी। हालांकि मैंने देखा कि मैं केवल doInBackground() विधि में एक प्रकार के पैरामीटर पास कर सकता हूं। यूआरएल के एक ऐरे की तरह। क्या यह सच है? तुम मुझे क्या सुझाव देंगे?

उत्तर

21

आप अपने AsyncTask कार्यान्वयन के लिए सेटर तरीकों में जोड़ सकते हैं, या यहां तक ​​कि अतिरिक्त पैरामीटर पारित करने के लिए अपने स्वयं के निर्माता परिभाषित करते हैं।

वैकल्पिक रूप से, अपने AsyncTask कार्यान्वयन एक गतिविधि आप अपनी गतिविधि के सभी उदाहरण चर का उपयोग कर सकते की एक आंतरिक वर्ग है यदि। मैं उपरोक्त विकल्प को स्वयं पसंद करता हूं, क्योंकि यह स्पष्ट रूप से इंगित करता है कि कार्य के लिए कौन सा डेटा आवश्यक है।

43

आप के रूप में वस्तुओं

new MyTask().execute(url, str, context); 

public class MyTask extends AsyncTask<Object, Void, Void> { 
    @Override 
    protected Void doInBackground(Object... params) { 
      Url url = (Url) params[0]; 
      String str = (String) params[1]; 
      Context ctx = (Context) params[2]; 

      return null; 
    } 
} 
+5

हाँ पैरामीटर पारित कर सकते हैं, लेकिन फिर इसे सुरक्षित प्रकार नहीं होगा। –

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

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