यह (कड़ाई से बोल रहा है) AsyncTask के लिए कई आदिम पारित करने के लिए संभव नहीं है। उदाहरण के लिए, यदि आप प्रदर्शन करना चाहते हैं myTask.execute(long1, long2)
और private class myTask extends AsyncTask<long, Void, Void>
संबंधित विधि के साथ सेट करने का प्रयास करते हैं :
@Override
protected LocationItemizedOverlay doInBackground(long... params) {...}
आपकी आईडीई को सुपरपाइप विधि को ओवरराइड करने की आवश्यकता के बारे में शिकायत होगी। ध्यान दें कि आप तथाकथित वर्गास विधि हस्ताक्षर का उपयोग कर रहे हैं doInBackground
, जहां (long... params)
यह कहने जैसा है "मैं एक लंबी संख्या के चर को स्वीकार करता हूं, जिसे एक सरणी के रूप में संग्रहीत किया जाता है। मुझे पूरी तरह से समझ में नहीं आता है कि एक कंपाइलर / आईडीई शिकायत क्या कारण बनता है। , लेकिन मुझे लगता है कि यह सामान्य वर्ग Params
को कैसे परिभाषित किया जाता है, इसके साथ करना है।
किसी भी मामले में, आप जो भी समस्या चाहते हैं, उसे प्राप्त करना संभव है, बशर्ते आप अपने आदिम को अपने संबंधित गैर-आदिम आवरणों (जैसे int => पूर्णांक, लंबे => लंबे, आदि) के लिए सही ढंग से कास्ट करें। असल में, आपको अपनी प्राथमिकताओं को स्पष्ट रूप से गैर-प्राथमिकताओं में डालने की आवश्यकता नहीं है। जावा आपके लिए संभालता है। आपको बस अपना ASyncTask इस प्रकार सेट करना है (उदाहरणों के लिए):
private class MyTask extends AsyncTask<Long, Void, Void> {
@Override
protected void doInBackground(Long... params) {
long myFirstParam = params[0]
}
...
}
आप इस वर्ग का उपयोग तब कर सकते हैं जब आप मूल रूप से इरादा रखते थे, जैसे:
MyTask myTask = new MyTask();
myTask.execute(long1, long2);
या आपके द्वारा पसंद किए जाने वाले किसी भी संख्या के लिए, वे समान प्रकार के हैं। यदि आपको कई प्रकार की प्राथमिकताओं को पारित करने की आवश्यकता है, तो यह भी किया जा सकता है, लेकिन आपको उपरोक्त को संशोधित करना होगा:
private class MyTask extends AsyncTask<Object, Void, Void> {
@Override
protected void doInBackground(Object... params) {
long myLongParam = (Long) params[0];
int myIntParam = (Integer) params[1];
}
...
}
यह अधिक लचीला है, लेकिन इसे स्पष्ट रूप से अपने संबंधित प्रकार के मापदंडों को कास्टिंग करने की आवश्यकता है। यदि इस लचीलेपन की आवश्यकता नहीं है (यानी एक एकल प्रकार का डेटा), तो मैं पहले विकल्प से चिपके रहने की सलाह देता हूं, क्योंकि यह थोड़ा अधिक पठनीय है।