निष्पादित करना मैं एंड्रॉइड एसडीके 4.0.3 एपीआई 15 का उपयोग कर रहा हूं और मैं समान रूप से एकाधिक AsyncTasks को चलाने के लिए चाहता हूं। मुझे अपना डेटा वेब सर्वर और एनिमेटिंग (10 एफपीएस) से वास्तविक समय मिल रहा है। लेकिन उपयोगकर्ता संचालन के आधार पर मुझे कुछ डेटा वेब सर्वर पर भी भेजने की जरूरत है। जब ऐसा होता है तो मेरी एनीमेशन थोड़ी देर के लिए रुक जाती है (डेटा भेजना कतार में आता है और डेटा प्राप्त करने के लिए यह इंतजार कर रहा है) और इसलिए मैं वास्तविक समय नहीं पकड़ सकता।एकाधिक AsyncTask के समानांतर
यह answer काफी समझा रहा है लेकिन मैं इसे काम नहीं कर सका। तो किसी भी मदद की सराहना की जाएगी।
मुझे लगता है कि मुझे लगता है कि प्राप्त करने के लिए इस सुविधा का उपयोग करने की आवश्यकता है:
AsyncTask.executeOnExecutor(Executor exec, Params... params)
लेकिन मैं एक पैरामीटर के रूप में एक निष्पादक पारित नहीं हो सकता और मैं एक प्रबंधक का दृष्टांत नहीं कर सकते। यह मेरा AsyncTask वर्ग है:
public class GetPlayers extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
rawData="";
for (String url : urls) {
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
if((rawData = buffer.readLine()) == null){
rawData = "error";
}
} catch (Exception e) {
e.printStackTrace();
}
}
return rawData;
}
@Override
protected void onPostExecute(String result) {
manipulate();
}
}
और मैं इसे इस तरह निष्पादित करें:
GetPlayers task = new GetPlayers();
requestString = "web adress is here...";
task.execute(new String[] { requestString });
क्या आप एक निष्पादक को पैरामीटर के रूप में पास नहीं करते हैं और मैं निष्पादक को तत्काल नहीं कर सकता। ' क्या आपने डेवलपर.android.com/reference/java/util/concurrent/Executor.html, http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html की जांच की है? आप किस सटीक निष्पादक का उपयोग करने की कोशिश कर रहे हैं? – sandrstar
वास्तव में मुझे निष्पादकों पर अधिक अनुभव नहीं है। तो मैंने निष्पादक वर्ग को तुरंत चालू करने की कोशिश की। जहां तक मैं लिंक से समझ गया हूं, मुझे थ्रेडपूलएक्सएटर का उपयोग करने की आवश्यकता है। मैं इसके लिए खोज करूंगा। धन्यवाद। – Srht
दाएं, निष्पादक सिर्फ एक इंटरफेस है और इसे तुरंत नहीं किया जा सकता है। आप प्रस्तुत निष्पादकों के लिए निष्पादक दस्तावेज़ों के 'ज्ञात अप्रत्यक्ष सबक्लास' अनुभाग देख सकते हैं। हालांकि, ठेठ एक ThreadPoolExecutor प्रतीत होता है। – sandrstar