私は Android SDK 4.0.3 API15 を使用しており、複数の AsyncTasks を並行して実行したいと考えています。Web サーバーからデータを取得し、リアルタイムでアニメーション化 (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 });