activity中的图片,可以在ondestroy中全部置空,但是类似于adapter(listview的适配器)中的图片该如何回收?

解决方案 »

  1.   

    listview的适配器中图片放到集合中?什么时候算退出呢?
      

  2.   

    listview的适配器中图片放到集合中?什么时候算退出呢?
    感觉也不靠谱,没有这方面的经验...
      

  3.   

    下载到的图片能不能通过按比例压缩,然后再再listview上进行加载
      

  4.   

    在adapter的getView时就添加到软件引用中。
    在设置imageView的Image时先调用 setImageBitmap(null)另外在activity在destory时gc一下
      

  5.   

    一般情况,为了防止图片占用内存过多引起的OOM问题,有下面的策略:
    1. 图片资源过大(申请内存太多引发OOM)
    -->解决方案:①合理计算图片的Sample Size ②适当变换图片格式(如ARGB_8888-->RGB_565)③在合理的情况下使用缩略图
    2. 图片太多,内存会被迅速吃掉,引发OOM
    -->解决方案:使用MemoryCache和DiskCache你需要仔细看一下官方的一个ImageCache:http://developer.android.com/intl/zh-CN/training/displaying-bitmaps/cache-bitmap.html
      

  6.   

    可以用SoftPreference来缓存图片,方便多次加载,系统内存不够时也能及时回收,其实很多开源的都将加载网络图片实现的很完善了,比如universalimageloader,可以直接拿来用
      

  7.   

    同样遇到你这样的问题,问题是我不知道如何正确的回收,导致图片就算Activity销毁了,图片还是占着。这个麻烦。。
      

  8.   

    SoftPreference来缓存图片才是正解吧。
      

  9.   

    1、压缩,8楼所说
    2、listAdapter 使用软引用,好处可以自行去搜索
    3、合理缓存。
       读取一张图的顺序是,内存缓存-》文件缓存-》网络读取
    内存缓存用软引用,文件缓存则是以url的hashcode为文件名的文件存储。
      

  10.   


    你好,可以告诉我QQ吗?我有关于这种问题,急需求助。不好意思,我发现上面的链接失效了,不知为何。
    ImageCache描述请看连接:http://developer.android.com/training/displaying-bitmaps/index.html
    DEMO链接:http://developer.android.com/shareables/training/BitmapFun.zip
    另外,ImageCache并不是一两句话就能说得明白的,所以你需要看DEMO,自己先学习一下。