我正在使用Android SDK 4.0.3 API15,我想並行運行多個AsyncTasks。我從Web服務器獲取數據並實時動畫(10 fps)。但根據用戶操作,我需要將一些數據發送到Web服務器。當發生這種情況時,我的動畫會暫停一段時間(發送數據進入隊列並且讓數據等待它完成),因此我無法捕捉到實時數據。並行執行多個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 });
你是什麼意思?'不'作爲參數傳遞執行者,我不能實例化執行者。'?你有沒有檢查過developer.android.com/reference/java/util/concurrent/Executor.html,http://developer.android.com/reference/java/util/concurrent/ThreadPoolExecutor.html?你正在嘗試使用哪一個確切的執行器? – sandrstar
其實我對Executors沒有太多經驗。所以我試圖實例化Executor類。據我所知,從鏈接我需要使用ThreadPoolExecutor。我會尋找它。謝謝。 – Srht
對,Executor只是一個接口,不能被實例化。您可以查看Executor文檔的「已知間接子類」部分,以獲取執行者。但是,典型的似乎是ThreadPoolExecutor。 – sandrstar