在listview 中显示图片,图片是从网络上拉取的,单张图片大小从几K到500K左右,单张图片是不会内存溢出的,图片显示的时候,不经过压缩,直接显示出来,在listview中可能有很多张图片,一直从服务器上拉取,然后反复在这些图片中拖动,就会造成内存溢出。我原先用softreference的方式来存图片的Bitmap,会内存溢出
后来改用LruCache,还是会,大家有没有什么办法

解决方案 »

  1.   

     最好是自己做一个Bitmap池,固定10个,然后所有的图片都公用,listView能见的只有几页,不可见的全都默认成你自己的图片。 说的比较草,我觉得大体思想就是这个吧。
      

  2.   


      是个不错的方法.
    另外补充一下,不要把图片全放在softreference,一定要把图片放在SD卡里,然后固定读取一个页面能显示的,不用的一定要及时回收.反正保证内存里只保存一个页面能显示的图片,
      

  3.   

    我的LruCache就是这样的思想,达到一定容量后,就把老的内存清除,但是还是会OOM
      

  4.   


    我的原来是softReference和本地sd卡缓存结合,不过我看api文档说,google到2.3后,softReference没多大用处了,所以就用了1/4的硬引用,这样界面不会太卡,