`
u011467537
  • 浏览: 11218 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android LruCache的使用

 
阅读更多
        内存缓存技术对那些大量占用应用程序宝贵内存的图片提供了快速访问的方法。其中最核心的类是LruCache (此类在android-support-v4的包中提供) 。这个类非常适合用来缓存图片,它的主要算法原理是把最近使用的对象用强引用存储在 LinkedHashMap 中,并且把最近最少使用的对象在缓存值达到预设定值之前从内存中移除。
  在过去,我们经常会使用一种非常流行的内存缓存技术的实现,即软引用或弱引用 (SoftReference or WeakReference)。但是现在已经不再推荐使用这种方式了,因为从 Android 2.3 (API Level 9)开始,垃圾回收器会更倾向于回收持有软引用或弱引用的对象,这让软引用和弱引用变得不再可靠。另外,Android 3.0 (API Level 11)中,图片的数据会存储在本地的内存当中,因而无法用一种可预见的方式将其释放,这就有潜在的风险造成应用程序的内存溢出并崩溃。

  为了能够选择一个合适的缓存大小给LruCache, 有以下多个因素应该放入考虑范围内,例如:

  你的设备可以为每个应用程序分配多大的内存?

  设备屏幕上一次最多能显示多少张图片?有多少图片需要进行预加载,因为有可能很快也会显示在屏幕上?

  你的设备的屏幕大小和分辨率分别是多少?一个超高分辨率的设备(例如 Galaxy Nexus) 比起一个较低分辨率的设备(例如 Nexus S),在持有相同数量图片的时候,需要更大的缓存空间。

  图片的尺寸和大小,还有每张图片会占据多少内存空间。

  图片被访问的频率有多高?会不会有一些图片的访问频率比其它图片要高?如果有的话,你也许应该让一些图片常驻在内存当中,或者使用多个LruCache 对象来区分不同组的图片。

  你能维持好数量和质量之间的平衡吗?有些时候,存储多个低像素的图片,而在后台去开线程加载高像素的图片会更加的有效。

  并没有一个指定的缓存大小可以满足所有的应用程序,这是由你决定的。你应该去分析程序内存的使用情况,然后制定出一个合适的解决方案。一个太小的缓存空间,有可能造成图片频繁地被释放和重新加载,这并没有好处。而一个太大的缓存空间,则有可能还是会引起 java.lang.OutOfMemory 的异常。
0
4
分享到:
评论

相关推荐

    Android使用LruCache缓存图片

    `LruCache`是Android SDK提供的一种基于最近最少使用(Least Recently Used)算法的内存缓存机制,常用于图片、数据等对象的缓存,以减少磁盘读取和网络加载的次数。本文将详细介绍如何在Android应用中使用`LruCache...

    Lrucache的相关使用(Android缓存)

    `LruCache`是Android SDK提供的一种基于最近最少使用(Least Recently Used)算法的内存缓存机制。本篇文章将深入探讨`LruCache`的原理、使用方法以及在实际应用中的注意事项。 首先,我们需要理解`LruCache`的工作...

    Android LRUCache机制 缓存机制

    ### Android LRUCache机制详解 #### 一、LRUCache简介 在Android开发过程中,缓存技术是一项重要的优化手段,可以显著提升应用性能并改善用户体验。LRUCache(Least Recently Used Cache,最近最少使用缓存)是一种...

    浅谈Android LruCache的缓存策略

    LruCache使用强引用保存缓存对象,当缓存满时,会自动移除最不常使用的对象。它提供了get和put方法,使得开发者能够方便地进行缓存的读取和写入。LruCache的大小可以通过构造函数设定,通常设置为应用程序可用内存的...

    android图片墙lrucache oom

    本篇文章将深入探讨如何使用LRUCache来解决Android图片墙中的OOM问题。 一、Android OOM简介 当应用程序请求的内存超过系统分配的最大内存时,就会发生OOM。在Android中,每个应用都有自己的Dalvik虚拟机实例,其...

    Android Lrucache加载图片(AsyncTask )

    `LruCache`和`AsyncTask`是Android提供的重要工具,可以帮助开发者优化内存使用和提高用户体验。本篇文章将深入探讨如何利用这两种技术来实现图片的网络加载与缓存。 首先,`LruCache`(Least Recently Used Cache...

    LruCache Demo

    LRUCache(Least Recently Used Cache)是Android系统提供的一个基于最近最少使用算法(LRU)的内存缓存机制。在Android开发中,特别是在处理大量图片或者数据时,LRUCache可以帮助我们有效地管理内存,避免因内存...

    android lrucache

    **Android LruCache详解** 在Android开发中,内存管理是一个至关重要的环节,特别是在处理大量图片或者数据时,如果不合理管理,很容易导致`OutOfMemoryError`(OOM)。Android提供了`LruCache`类,用于实现一个高效...

    安卓图片加载缓存相关-AsyncTask的使用及ListView的常见优化asyncTask异步加载数据使用了LruCache优化图片加载通过滑动监听提高ListView滑动流畅度.rar

    AsyncTask的使用及ListView的常见优化 asyncTask异步加载数据 使用了LruCache优化图片加载 通过滑动监听提高ListView滑动流畅度.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习...

    Android照片结合LruCache和DiskLruCache Demo源码程序

    本项目"Android照片结合LruCache和DiskLruCache Demo源码程序"旨在展示如何将这两个缓存策略结合使用,以实现一个高效的图片墙应用。 首先,`LruCache`(Least Recently Used Cache)是Android SDK提供的一种基于...

    LruCache使用

    总之,LRUCache是Android中一个高效的内存缓存工具,通过合理使用,可以显著提升应用性能,尤其是对于处理大量Bitmap的情况。了解其工作原理和使用方法,能够帮助开发者更好地优化应用内存管理,提升用户体验。

    安卓listview相关相关-这是一个包含异步加载网络编程JSON解析LruCache图片缓存的简易的ListView图文混排Demo.rar

    LruCache是Android提供的一个内存缓存机制,基于最近最少使用原则(LRU)。在处理大量图片时,LruCache可以有效地存储图片,避免频繁地加载和解码,从而提高性能和减少内存消耗。图片通常先从网络下载,然后存入...

    详解Android的内存优化–LruCache

    所以我们可以推断出 LruCache 的实现原理:把近期最少使用的数据从缓存中移除,保留使用最频繁的数据,那具体代码要怎么实现呢,我们进入到源码中看看。 LruCache源码分析 public class LruCache<K> { //缓存 map ...

    详解Android的内存优化--LruCache

    **Android内存优化——详解LruCache** 在Android开发中,内存管理是至关重要的,尤其是在处理大量数据或资源时。为了提高应用性能并避免因内存不足导致的系统杀进程,开发者通常会采用缓存策略。其中,`LruCache` ...

    android图片下载LruCache实现三级缓存方式

    首先,LruCache是Android SDK提供的一种基于最近最少使用原则(Least Recently Used)的内存缓存机制。LRU策略的核心思想是:当缓存空间满时,最近最少使用的数据会被优先淘汰。在图片加载场景中,LruCache可以帮助...

    Android的缓存技术:LruCache和DiskLruCache

    以下是如何在Android中使用LruCache的示例代码: ```java int cacheSize = (int) (Runtime.getRuntime().maxMemory() / 1024) / 8; LruCache, Bitmap> bitmapCache = new LruCache(cacheSize); ``` 然后,我们转向...

    PhotosWallDemo 结合LruCache和DiskLruCache

    首先,LruCache(Least Recently Used Cache)是Android SDK中提供的一种基于最近最少使用原则的内存缓存机制。它的核心思想是当缓存空间满时,优先淘汰最近最少使用的数据。LruCache内部通过双向链表和哈希表实现,...

    LruCache缓存demo

    4. **使用示例**:在Android应用中,通常会创建一个LRUCache实例,然后将需要缓存的对象放入其中。例如,可以创建一个用于缓存Bitmap的LRUCache,通过`put(key, bitmap)`将Bitmap与一个键关联,然后在需要时通过`get...

    详解Android的内存优化–LruCache.zip

    LruCache是Android SDK提供的一种基于最近最少使用(Least Recently Used)算法的内存缓存机制。它的核心思想是:当内存空间不足时,优先移除最近最少使用的数据,以保证缓存中的数据是最有价值和最常访问的。 1. *...

    Android 异步加载图片,使用LruCache和SD卡或手机缓存

    1、使用了线程池来管理...2、使用LruCache来缓存图片 3、使用手机来缓存图片 4、GridView滑动的时候取消下载任务,静止的时候进行下载,GridView滑动更加的流畅 5、降低了代码的耦合性,结构更加的清晰,便于以后重用

Global site tag (gtag.js) - Google Analytics