由于java的回收机制,使得程序员对内存的引用的回收是不可预测的。而这里就可以做做文章了,讲解SoftReference在一方面的应用(对于有些技术,我感觉只学有用的,不学用不到的。这有别于学os原理,比如os原理你最好精通,这样你的编程内功就会很强,具体的招式则到用到时再学习,或者用不到的就没必要去学)。在android编程中,特别是在listview用来显示来自网络的图片等需要异步加载的资源时,往往需要一个优化的机制。第一是异步加载,这个看我的一篇收藏的博客”Android实现ListView异步加载图片”。第二则是既要考虑到手机的内存问题,又要考虑到网络下载的问题,就是当你下载了一张图片,然后显示在listview的一个view上,然后执行往下拉又往回拉这个动作时,那么我们是否重新去下载该图片呢?好处是节省内存,你每次就存着显示在界面上的那几幅图,但是坏处是每次更新都要重新下载图片。所以我们需要一个缓存的机制,当只有图片的url(即图片的引用)不存在缓存中时才去下载。当然,当内存告急时,需要释放一些没引用的图片,这样,SoftReference就可以很大的用武之地了。即将下载下来的图片放在SoftReference中,然后用map,用Key=img_url来存储该软连接。
分享到:
相关推荐
软引用是Java中的一个特性,它是一种特殊的引用类型,不会像强引用那样阻止垃圾回收器清理对象。当系统内存充足时,软引用的对象不会被回收;但当内存不足时,垃圾回收器会优先回收这些软引用的对象,以释放内存。...
在Android开发中,ListView是一个非常常见的组件,用于展示大量数据列表。然而,当这个列表包含网络图片时,如果不采用异步加载策略,可能会导致应用性能下降甚至崩溃,因为UI线程会被阻塞,用户界面无法及时响应。...
1. **缓存管理**:首先,类中定义了一个`HashMap`类型的成员变量`imageCache`,用于存储已加载过的图片的软引用(`SoftReference<Drawable>`)。软引用允许Java垃圾回收机制在内存不足时自动清理这些对象,从而避免...
软引用是Java中的一个特性,通过使用java.lang.ref.SoftReference类实现。软引用的对象会在系统内存不足时被垃圾回收器回收,但在此之前,即使内存不足,也不会立即回收。在图片缓存中,软引用可以用来存储那些非...
在Android应用开发中,ListView是一个常用的组件,用于展示大量列表数据。当列表包含图片时,由于网络请求的延迟,如果不采取异步加载策略,用户体验会大打折扣。本篇文章将详细探讨如何实现ListView中的异步图片...
在Android应用开发过程中,`ListView`作为一款常用的展示列表数据的组件,其性能优化对于提升用户体验至关重要。本文将从UI优化、数据适配性能优化等方面进行深入探讨。 #### 二、UI优化 1. **条目之间的间距设置*...
`SoftReference`是一种弱引用类型,它允许Java垃圾收集器在内存不足时回收存储的图片,以防止内存泄漏。 2. **`loadDrawable()`方法**: - 这是主加载方法,接收一个图片URL和一个`ImageCallback`对象。 - 首先...
这个压缩包文件"安卓Android源码——douBanList(滚动到底部加载新的,软缓存,懒加载).7z"显然包含了开发一个特定安卓应用的源代码,特别是涉及到豆瓣(douban)列表的展示,具备下拉刷新和上拉加载更多功能,以及...
- **软引用(SoftReference)**:在内存压力较大时,软引用所指向的对象可能被垃圾回收器回收。软引用通常用于实现二级缓存。 - **弱引用(WeakReference)**:弱引用所指向的对象一旦不再被强引用所关联,就会被...
在Android开发中,内存泄漏是一个严重的问题,它会导致应用程序占用过多内存,影响性能甚至导致应用崩溃。本示例代码着重展示了如何避免Android应用中的内存泄漏,主要包括五个关键方面:关闭游标、重用适配器、回收...
- **WeakReference和SoftReference**: 在Java中,它们是弱引用和软引用的实现,用于实现缓存机制,当内存不足时,这些引用指向的对象可以被垃圾回收器回收。 #### 视图(View)体系 - **View**: Android中所有界面...
在Android编程中,ListView是一个常用的组件,用于展示大量的列表数据。然而,由于ListView需要频繁地加载和重绘Item,如果不进行优化,可能会导致性能问题,如滚动卡顿。缓存机制就是一种有效的优化手段,它可以...
在移动开发领域,特别是针对Android平台的应用开发过程中,性能优化是确保应用流畅运行、提升用户体验的关键环节。本篇文章将围绕“Android应用性能优化”这一主题,详细探讨Android应用架构的设计原则、常见性能...
在Android应用开发中,性能优化是一项至关重要的任务,它直接影响到用户的体验和应用的市场竞争力。本文将深入探讨一些Android应用性能优化的最佳实践,主要基于Java编程语言。 1. **内存管理** - **避免内存泄漏*...
性能调优还包括避免一次性加载过多数据,使用列表视图(ListView)和滚动视图(RecyclerView)的缓存机制,以及合理使用软引用(SoftReference)和弱引用。此外,使用Android的最新版本和优化过的ART虚拟机可以...
在Java中,我们可以使用软引用(SoftReference)或弱引用(WeakReference)来创建一个对象池,存储最近使用的图片。当内存不足时,垃圾回收器会自动清理这些引用,释放内存。而在单片机上,由于内存资源有限,可能...
在Android开发中,创建一个美观且功能强大的图片浏览器是提升用户体验的重要一环。"Android编程实现的超炫图片浏览器"这个话题将引导我们探索如何在Android平台上构建一个类似iPhone的CoverFlow效果的图片查看器。...
1. **使用软引用**:对于非关键资源,可以使用`SoftReference`来存储,这样当系统内存紧张时,这些资源可以被自动释放。 2. **限制缓存大小**:如果使用缓存机制,要设置合理的缓存大小限制,避免占用过多内存。 3. ...