私は現在、いくつかの AsyncTasks を使用してネットワーク接続を処理する必要がある Android アプリケーションに取り組んでいます。
これは、接続を確立し、マイク入力を処理する新しいタスクを呼び出す最初のタスクです。
private class establishConnectionTask extends
AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... params) {
try {
// initialize connection
initConnection();
MicrophoneTask micTask = new MicrophoneTask();
micTask.execute("");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
return "Executed";
}
@Override
protected void onPostExecute(String result) {
mReadInputTask = new readInputTask();
mReadInputTask.execute("");
super.onPostExecute(result);
}
すべて正常に動作し、接続は機能しており、データを転送できます。また、MicrophoneTask もその仕事をしています。
問題は次のとおりです。
onPostExecuteメソッドでは、すべてのネットワーク入力を処理する新しい AsyncTask を作成しています。
readInputTask は次のようになります。
private class readInputTask extends AsyncTask<String, Integer, String>
{
@Override
protected void onPreExecute()
{
Log.d("DEBUG", "pre");
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
// blocking readInput method
Log.d("DEBUG", "doInBackground");
}
@Override
protected void onPostExecute(String result) {
Log.d("DEBUG", "post");
super.onPostExecute(result);
}
}
readInputTask は、readInputTask の onPreExecute メソッドでスタックします。「doInBackground」と「post」も期待していますが、得られる唯一の出力は「pre」です。
誰かがエラーを見たり、これに対する解決策を知っていますか?
どんな助けでも大歓迎です!