【发布时间】:2013-09-23 21:10:32
【问题描述】:
我目前正在开发一个必须使用多个 AsyncTask 处理网络连接的 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”。
有人看到错误或知道解决方案吗?
感谢任何帮助!
【问题讨论】:
-
我认为
doInBackground在 Log 行之前抛出异常。您在 Logcat 中看到任何错误吗? -
不抛出异常。我只看到我的日志行。
标签: android multithreading android-asynctask network-programming