我正在尝试同时运行两个AsyncTask。(平台是Android 1.5,HTC Hero。)但是,只有第一个会被执行。以下是一个简单的片段来描述我的问题:
public class AndroidJunk extends Activity {
class PrinterTask extends AsyncTask<String, Void, Void> {
protected Void doInBackground(String ... x) {
while (true) {
System.out.println(x[0]);
try {
Thread.sleep(1000);
} catch (InterruptedException ie) {
ie.printStackTrace();
}
}
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
new PrinterTask().execute("bar bar bar");
new PrinterTask().execute("foo foo foo");
System.out.println("onCreate() is done.");
}
}
我期望的输出是:
onCreate() is done.
bar bar bar
foo foo foo
bar bar bar
foo foo foo
等等。但是我得到的是:
onCreate() is done.
bar bar bar
bar bar bar
bar bar bar
第二个AsyncTask从未被执行。如果我改变execute()语句的顺序,只有foo任务会产生输出。
我是否漏掉了一些明显的东西和/或做了一些愚蠢的事情? 是否不可能同时运行两个AsyncTasks?
编辑:我意识到手机运行Android 1.5,我相应地更新了问题描述。在运行Android 2.1的HTC Hero上,我没有这个问题。嗯...