本帖最后由 Kevenshao 于 2013-12-12 11:13:51 编辑

解决方案 »

  1.   

    Executor mExec = new ThreadPoolExecutor
    这个传入到 CanvasImageTask 是做什么用的,这个多个线程异步更新图片 不需要线程池的,
    实例化2,3个线程,分批更新图片就OK 了。
      

  2.   

    android 3.0以后,AsyncTask是单线程执行的,也就是线程池只有一个线程在跑,其它的任务就会等待,
    Executor mExec = new ThreadPoolExecutor的目的就是设置线程池有多个线程并发执行。
    选择使用AsyncTask,是因为它有线程池,不用频繁的创建销毁线程,效率更高。
      

  3.   

    这个到没注意到,我自己以前更新ListView都是直接开 2到3个线程 分批加载图片,
    个人认为也不需要开很多线程,如果你的ListView有N多个Item需要下载图片,很可能导致内存消耗过多。
    有线程池的话,也不能立即利用上,比如网络堵塞的时候 很多线程就无法及时执行完。