`
phenom
  • 浏览: 408883 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

引爆你的图片浏览, ListView 大图片

 
阅读更多
之前发现,ListView里面的图片资源越占越大,特别是当列表载入的图片相当大的时候,比如微博的中等图片大小,就非常难受.而log也可以看出,是图片没有回收,尽管相关的View已经不使用了,这就是doc里面说的内存泄露了.

因为ImageView里面关联着Bitmap.导致Bitmap没有办法释放,所以尽管ListView只是展示一部分内容(当前可见的部分),其它部分却没有办法回收.

还好,在AbsListView里面提供了一个RecyclerListener接口,客户端覆盖这个接口中的方法,手动回收Bitmap,就可以了.
默认这个不处理什么东西的.

@Override
    public void onMovedToScrapHeap(final View view) {}
这个方法名可以看出是将View移入待回收区,
但是由于引用的问题,虚拟机无法在第一时间回收,要等到所有的引用都无效了.才会回收

如我在微博程序中的:
TagsViewGroup tagsViewGroup=itemView.mTagsViewGroup;
            if (null!=tagsViewGroup) {
                tagsViewGroup.setAdapter(null);
                tagsViewGroup.removeAllViews();
            }
将View清空了,就可以回收Bitmap了.

这一点很重要,当然还可以处理TextView,等占用资源多的View的回收,对于一个列表来说,加载大图,用这样的方法释放就可以了.
monitor里面heap测试,大约是在25m以内,而heapsize=64m的手机.
这样就可以避免以前在32m heap中配置中出现oome了.


引爆你的图片浏览,亮瞎你的眼睛.


分享到:
评论

相关推荐

    c# winform ListView实现图片浏览

    在实际项目中,你可能需要加载多个图片,可以通过循环读取文件夹中的所有图片文件,然后依次添加到ImageList和ListView中。例如: ```csharp string[] imageFiles = Directory.GetFiles("图片路径", "*.jpg"); // ...

    listview加载多幅图片

    在本文中,我们将深入探讨如何在ListView中加载多幅图片,并且讨论图片的存储策略,以及如何利用ImageList组件进行有效的管理。 首先,ListView控件本身并不直接支持加载图像。为了在ListView中显示图片,我们需要...

    android listview顶部图片下拉时放大

    6. **限制放大范围**: 为了防止图片过大导致用户体验下降,我们需要设定一个最大放大比例。当图片达到最大比例时,停止放大动画。 7. **恢复原状**: 当用户上拉ListView或停止滑动时,需要恢复图片的原始大小。这...

    C#在ListView中Subitem显示图片

    在给定的场景中,"C#在ListView中Subitem显示图片"是一个关于在ASP.NET Web应用程序中使用ListView控件来展示数据时,如何在Subitems中添加图像的功能。 ListView控件是ASP.NET 2.0引入的一种高度可定制的数据绑定...

    下拉listview放大图片

    滚动listview可以让listview顶部的图片放大。

    下拉放大头部图片的ListView

    本话题聚焦于“下拉放大头部图片的ListView”,这是一种常见的设计模式,如最美应用和多米音乐的详情页所展示的那样,当用户下拉列表时,顶部的图片会逐渐放大,创造出一种动态的视觉体验。 首先,我们要理解这个...

    关于listview item重用导致图片重复加载 图片重新请求

    然而,在实现ListView时,由于其内部机制,可能会出现一个问题,即ListView中的item(列表项)重用导致图片重复加载,这不仅会消耗不必要的网络资源,还可能影响用户体验。本文将深入探讨这个问题,并提供解决方案。...

    listView显示网络图片

    为了避免加载大图时内存溢出,Glide允许我们指定图片的加载尺寸。例如,我们可以根据ImageView的大小设定加载尺寸: ```java Glide.with(context) .load(url) .override(imageView.getWidth(), imageView....

    自定义的带图片的ListView的实现

    在实际开发中,你可能还需要处理更多细节,比如数据的异步加载、ListView的滚动优化(使用convertView复用列表项View)以及点击事件的监听等。通过这个过程,开发者可以更好地理解和掌握Android中的数据绑定和视图...

    listview-图片居中显示

    总结来说,要实现ListView在LargeIcon模式下图片居中显示,你需要自定义Adapter、创建适配的布局文件、设置Adapter并根据项目数量调整图片大小。通过这种方式,你可以灵活地控制ListView的显示效果,提供良好的用户...

    ListView解决图片混乱

    然而,在ListView中加载图片时,由于滚动过程中View的复用,经常会出现图片显示混乱的问题,这就是所谓的“图片错位”或者“图片混乱”现象。这个问题主要涉及到ListView的优化和图片加载策略。 首先,我们需要理解...

    Glide入门例子-LIstView浏览图片

    【Glide入门例子-LIstView浏览图片】 在Android应用开发中,展示大量图片时,我们经常需要使用ListView来高效地加载和滚动图片。Glide是一个强大的图片加载库,它优化了图片的加载过程,提供了平滑的滚动体验,同时...

    C# 上传图片在ListView中显示

    将上传图片到ListView中且保存到指定文件夹下,以缩略图形式显示,且可以删除、浏览图片。

    Android ListView扩展(图片+文字)

    本示例将深入讲解如何在ListView中实现图片和文字的结合显示,以增强用户体验。我们将使用Android Studio 3.1.4进行开发。 首先,理解ListView的基本概念。ListView是一种可滚动的视图,用于展示一个可变大小的数据...

    ListView异步加载图片

    然而,如果直接在ListView中加载网络图片,可能会导致应用性能下降,因为这会阻塞主线程,造成UI卡顿。为了解决这个问题,我们需要实现ListView的异步加载图片功能。本篇文章将详细介绍如何通过软引用缓存图片,实现...

    ListView头图片下拉放大效果

    "ListView头图片下拉放大效果"就是一种常见的交互设计,当用户下拉ListView时,头部的图片会逐渐放大,释放时则恢复原状,为用户提供了可视化的反馈。 实现这个效果主要涉及到以下几个关键知识点: 1. **自定义...

    Listview显示图片优化

    1. 使用高效的图片加载库:对于ListView中的图片加载,推荐使用像Glide、Picasso或 Fresco 这样的第三方库。这些库具有智能缓存机制,能在内存和磁盘上管理图片,避免不必要的内存占用,同时支持自动调整图片大小,...

    listview加载网络图片

    在描述中提到,提供的代码资源可以解决大部分开发者遇到的头疼问题,即如何优化ListView的图片加载。通常,直接从网络加载图片会消耗大量的内存和CPU资源,导致应用卡顿,甚至崩溃。为了解决这个问题,开发者需要...

    Android开发之listview优化+图片异步加载缓存+避免图片显示闪烁

    本篇将深入探讨如何对ListView进行优化,以及如何实现图片的异步加载和缓存策略,以避免这些问题。 **1. ListView优化** ListView的优化主要涉及以下几个方面: 1.1 **convertView复用机制**:ListView的Adapter...

Global site tag (gtag.js) - Google Analytics