android异步任务是否缓慢或我做错了什么?
这是我做的事情
Log.e("Filler", "before");
new DownloadListContent().execute("string");
Log.e("Filler", "after");
和DownloadListContent()..
class DownloadListContent extends AsyncTask<Object, Object, Object> {
protected Void doInBackground(Object... urls) {
Log.e("Filler", "Am in doInBackground");
....
}
这是logCat。
03-15 23:18:**47**.598: E/Filler(17150): before
03-15 23:18:**47**.598: E/Filler(17150): after
03-15 23:18:**59**.789: E/Filler(17150): Am in doInBackground
这是在背景发生前12秒。 为什么会这样?
与此同时,我有其他其他类的AsyncTask实例执行其他一些网络作业。 AsyncTask会影响另一个吗?
我真的无法想出那一个!
更新
感谢您的评论。似乎async对同时运行多少个线程有一个硬性限制。如果您必须同时下载一堆图像,这是一个杀手锏。
遵循CommonsWare的方法here我可以分离asyncTask的类型,以便一种类型(图像)不会阻止其他类型(列表数据)。
答案 0 :(得分:5)
是的,它确实有有限的线程池。在Honeycomb上,池大小为1,因此您不能同时拥有两个任务。您可以提供自己的执行程序,以便并行运行多个任务。这可能不会提高性能,所以你应该考虑重新编写代码:
http://developer.android.com/reference/android/os/AsyncTask.html#executeOnExecutor(java.util.concurrent.Executor,Params ......)