2011-03-19 20 views
2

我有一个用户的Facebook好友名单的列表视图,每行显示朋友的名字和图片。为了从Facebook上获得照片,我使用ASyncTask启动了一个线程,跟在Gilles Debunne's post "Multithreading For Performance"之后。如何限制使用ASyncTask启动的线程数量?

当我向下滚动列表直到结束时,启动的线程数量可能会很大,这会使所有内容都非常缓慢,直到所有线程完成其任务。

我该如何限制线程数?

感谢

朱利安

回答

3

眼下,除非你愿意限制自己的API等级11(Android 3.0的)和更高的,你不能限制由AsyncTask使用的线程数。 IIRC,它将最多使用20个线程。

如果你想少于这个,你需要创建你自己的线程池机制,并使用它来代替AsyncTask。或者,将AsyncTask中的代码复制到您自己的项目中,并修改其自己的线程池的特征。

+0

好,谢谢。我将使用LazyList,在这里描述:http://stackoverflow.com/questions/541966/android-how-do-i-do-a-lazy-load-of-images-in-listview。 – jul 2011-03-19 19:58:44

0

你可以使用一个ThreadPoolExecutor限制用于任务池中的线程数。

+0

那只是在API级别11 – CommonsWare 2011-03-19 19:27:39

+1

可实际上它的“自:API等级1” – sergio91pt 2012-02-05 22:30:20