0

I have an issue here , if i invoke two AsyncTasks , the last one's doinbackground never gets called. I really need to invoke these two operations from my main activity threads.

Please shed some light on the issue..

Thanks

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    .
    .
    .
    .
    .
    .
    new ClientListener(this).execute();
    new DatabaseReader(this).execute();
}
4

1 回答 1

2

AsyncTask 使用线程池模式来运行来自 doInBackground() 的内容。问题最初是(在早期的 Android 操作系统版本中)池大小仅为 1,这意味着一堆 AsyncTask 没有并行计算。但后来他们修复了这个问题,现在大小为 5,所以最多 5 个 AsyncTask 可以同时运行。不幸的是,我不记得他们到底在哪个版本中改变了这一点。

根据谷歌文档

首次引入时,AsyncTask 在单个后台线程上串行执行。从 DONUT 开始,这被更改为允许多个任务并行运行的线程池。在 HONEYCOMB 之后,计划将其改回单线程,以避免并行执行导致的常见应用程序错误。如果你真的想要并行执行,你可以使用这个方法的 executeOnExecutor(Executor, Params...) 版本和 THREAD_POOL_EXECUTOR; 但是,请参阅那里的评论以获取有关其使用的警告。

于 2012-06-23T13:45:46.893 回答