我正在使用 Android SDK 4.0.3 API15,我想并行运行多个 AsyncTasks。我从网络服务器获取我的数据并实时动画(10 fps)。但根据用户操作,我还需要向 Web 服务器发送一些数据。发生这种情况时,我的动画会暂停一小段时间(发送数据进入队列并获取数据等待它完成),因此我无法捕捉实时。
这个答案很好解释,但我无法让它发挥作用。因此,任何帮助将不胜感激。
我想我需要使用这个功能来实现:
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 });