我目前正在开发一个必须使用多个 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 方法中。我得到的唯一输出是“pre”,尽管我也期望“doInBackground”和“post”。
有没有人看到错误或知道解决方案?
任何帮助表示赞赏!