一种android平台下基于缓存的列表处理方法技术

技术编号:11611918 阅读:85 留言:0更新日期:2015-06-17 12:18
本发明专利技术公开一种android平台下基于缓存的列表处理方法,包括如下步骤:步骤S100,设置两级缓存:第一级缓存LinkedHashMap<String,Bitmap>;二级缓存ConcurrentHashMap<String,SoftReference<Bitmap>>;步骤S200,第一级缓存用LinkedHashMap<String,Bitmap>保留Bitmap的强引用,控制缓存的大小MAX_CAPACITY=10;步骤S300,当继续向该缓存中存数据的时候,将一级缓存中的最近最少使用的元素放入二级缓存ConcurrentHashMap<String,SoftReference<Bitmap>>,二级缓存中保留的Bitmap的软引用SoftReference。其提高用户体验,节省了资源。

【技术实现步骤摘要】

本专利技术涉及计算机网络
,特别是涉及。
技术介绍
Android平台下,cpu资源、内存资源以及网络资源都是非常紧张的资源。列表是android用来展示集合数据的常用控件,当集合中有需要从网络或者数据库中读取的数据时,列表的显示将是非常耗时的。
技术实现思路
本专利技术的目的在于提供,其提高用户体验,节省了资源。为实现本专利技术目的而提供的,包括如下步骤:步骤S100,设置两级缓存:第一级缓存 LinkedHashMap〈String, Bitmap) ;二级缓存 ConcurrentHashMap<String, SoftReference<Bitmap>> ;步骤S200,第一级缓存用LinkedHashMap〈String, Bitmap〉保留 Bitmap 的强引用,控制缓存的大小MAX_CAPACITY=10 ;步骤S300,当继续向该缓存中存数据的时候,将一级缓存中的最近最少使用的元素放入二级缓存 ConcurrentHashMap〈String, SoftReference<Bitmap>>, 二级缓存中保留的 Bitmap 的软引用 SoftReference。较优地,所述步骤S300还包括如下步骤:步骤S310,在创建SoftReference对象的时候,使用了一个ReferenceQueue对象作为参数提供给SoftReference的构造方法:ReferenceQueue queue=new ReferenceQueueO ;SoftReference ref=new SoftReference(aMyObject, queue);步骤S320,当所述SoftReference所软引用的aMyOhject被垃圾收集器回收的同时,ref所强引用的SoftReference对象被列入ReferenceQueue。本专利技术的android平台下基于缓存的列表处理方法,其通过设置两级缓存,有效的提高了大数据量情况下列表的效率,提高用户体验,节省了资源。【附图说明】图1为依据本专利技术一个具体实施例的android平台下基于缓存的列表处理方法流程图。 【具体实施方式】为了使本专利技术的目的、技术方案及优点更加清楚透彻,以下结合附图及实施例,对本专利技术的android平台下基于缓存的列表处理方法进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。本专利技术android平台下基于缓存的列表处理方法,如图1所示,包括如下步骤:步骤S100,设置两级缓存:第一级缓存 LinkedHashMap〈String, Bitmap) ;二级缓存 ConcurrentHashMap<String, SoftReference<Bitmap>> ;步骤S200,第一级缓存用LinkedHashMap〈String, Bitmap〉保留 Bitmap 的强引用,控制缓存的大小MAX_CAPACITY=10 ;步骤S300,当继续向该缓存中存数据的时候,将一级缓存中的最近最少使用的元素放入二级缓存 ConcurrentHashMap〈String, SoftReference<Bitmap>>, 二级缓存中保留的 Bitmap 的软引用 SoftReference。软引用SoftReference保存的对象实例,除非JVM即将OutOfMemory,否则不会被GC回收。这个特性使得它特别适合设计对象Cache。对于Cache被缓存的对象最好始终常驻内存,但是如果JVM内存吃紧,为了不发生OutOfMemoryError导致系统崩溃,必要的时候也允许JVM回收Cache的内存,待后续合适的时机再把数据重新Load到Cache中。这样可以系统设计得更具弹性。内存优化是将获取到的数据存取到Map集合中,如果再次引用此数据,就直接从Map集合中获取,这样会导致一个问题,如果Map集合中的数据特别多,比如存取了 100万条数据,这样有可能就会导致内存溢出。这是因为Map集合是强引用的集合,如何不把Map集合置为空的话,这个集合Java虚拟机就不会把它回收掉,当Map中的数据大小超过了内存大小就会导致内存溢出。为了避免这种异常要使用软引用softreference,软引用和强引用的区别如下:har(!reference默认new出来的对象都是这种强应用的类型,只要一个对象还保留的有引用,他就不会被垃圾回收。softreference他是java虚拟机给我们提供的一个包装类型,java虚拟机会尽量长时间的保留这个对象,当java虚拟机内存不足的时候java虚拟机就会回收softreference里面的对象。SoftReference的特点是它的一个实例保存对一个Java对象的软引用,该软引用的存在不妨碍垃圾收集线程对该Java对象的回收。也就是说,一旦SoftReference保存了对一个Java对象的软引用后,在垃圾线程对这个Java对象回收前,SoftReference类所提供的get O方法返回Java对象的强引用。另外,一旦垃圾线程回收该Java对象之后,get O方法将返回null。作为一个Java对象,SoftReference对象除了具有保存软引用的特殊性之外,也具有Java对象的一般性。所以,当软引用对象被回收之后,虽然这个SoftReference对象的get()方法返回null,但这个SoftReference对象已经不再具有存在的价值,需要一个适当的清除机制,避免大量SoftReference对象带来的内存泄漏。较佳地,本专利技术的android平台下基于缓存的列表处理方法,在步骤S300中,还包括如下步骤:步骤S310,在创建SoftReference对象的时候,使用了一个ReferenceQueue对象作为参数提供给SoftReference的构造方法:ReferenceQueue queue=new ReferenceQueueO ;SoftReference ref=new SoftReference(aMyObject, queue);步骤S320,当所述SoftReference所软引用的aMyOhject被垃圾收集器回收的同时,ref所强引用的SoftReference对象被列入ReferenceQueue。在java.lang.ref 包里还提供了 ReferenceQueue,在创建 SoftReference 对象的时候,使用了一个ReferenceQueue对象作为参数提供给SoftReference的构造方法:ReferenceQueue queue=new ReferenceQueueO ;SoftReference ref=new SoftReference(aMyObject, queue);那么当该SoftReference所软引用的aMyOhject被垃圾收集器回收的同时,ref所强引用的SoftReference对象被列入ReferenceQueue。也就是说,ReferenceQueue中保存的对象是Reference对象,而且是已经失去了它本文档来自技高网...

【技术保护点】
一种android平台下基于缓存的列表处理方法,其特征在于,包括如下步骤:步骤S100,设置两级缓存:第一级缓存LinkedHashMap<String,Bitmap>;二级缓存ConcurrentHashMap<String,SoftReference<Bitmap>>;步骤S200,第一级缓存用LinkedHashMap<String,Bitmap>保留Bitmap的强引用,控制缓存的大小MAX_CAPACITY=10;步骤S300,当继续向该缓存中存数据的时候,将一级缓存中的最近最少使用的元素放入二级缓存ConcurrentHashMap<String,SoftReference<Bitmap>>,二级缓存中保留的Bitmap的软引用SoftReference。

【技术特征摘要】

【专利技术属性】
技术研发人员:王洪波周强杨奇陈皓张伟刘冬娜金钊
申请(专利权)人:航天信息股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1