同时运行多个AsyncTask-不可能?我在试着同时运行两个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任务才会产生输出。我是不是错过了一些显而易见的事情和/或做了些蠢事?难道不可能同时运行两个AsyncTask吗?编辑:我意识到有问题的手机运行Android1.5,我更新了问题下降。因此。我在HTC Hero上运行Android2.1时没有这个问题。嗯.。
3 回答
至尊宝的传说
TA贡献1789条经验 获得超10个赞
@TargetApi(Build.VERSION_CODES.HONEYCOMB) // API 11void startMyTask(AsyncTask asyncTask) { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params); else asyncTask.execute(params);}
Project > Properties > Android > Project Build Target
. minSdkVersion
minSdkVersion
蛊毒传说
TA贡献1895条经验 获得超3个赞
@TargetApi(Build.VERSION_CODES.HONEYCOMB) // API 11public static <T> void executeAsyncTask(AsyncTask<T, ?, ?> asyncTask, T... params) { if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) asyncTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, params); else asyncTask.execute(params);}
- 3 回答
- 0 关注
- 642 浏览
添加回答
举报
0/150
提交
取消