在Android开发中,ViewPager作为重要的UI组件之一,为我们提供了流畅的页面滑动效果。然而,遇到ViewPager的缓存问题时,开发者常常头疼不已。本文将通过详细的背景定位、演进历程、架构设计、性能攻坚、复盘总结与扩展应用来深入探讨这一问题的解决方法。
---
一、背景定位
在某个移动应用中,用户浏览新闻内容的功能使用了ViewPager,而随着功能的不断扩展,页面的数量逐渐增加            
                
         
            
            
            
            导读本文作者:choha平常工作中经常和 WebView 打交道,对于浏览器的缓存策略也了解啦!但是默认缓存策略还真得没去了解过。意外看到这篇文章,很惊喜。话不多说,咱们来看看吧!1. 背景今天测试反馈,前端更新了H5的内容,但是客户端通过 WebView 的方式打开后,发现内容没有更新,使用charles抓包,发现客户端访问访问时,连请求都没法发出。于是测试的妹子在企业微信中@我,看到消息有点懵            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-10 15:11:48
                            
                                80阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            前言: 在上一篇文章中介绍了内存缓存,内存缓存的长处就是非常快。可是它又有缺点:空间小,内存缓存不可能非常大;内存紧张时可能被清除;在应用退出时就会消失,做不到离线。 基于以上的缺点有时候又须要第二种缓存,那就是磁盘缓存。大家应该都用过新闻client,非常多都有离线功能,功能的实现就是磁盘缓存。 DiskLruCache: 在Android中用到的磁盘缓存大多都是基于DiskLruCache实            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-02 10:41:23
                            
                                12阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            异步下载 / 本地缓存异步下载大家都知道,在Android应用中UI线程5秒没响应的话就会抛出无响应异常,对于远程获取大的资源来说,这种异常还是很容易就会抛出来的,那么怎么避免这种问题的产生。在android中提供两种方法来做这件事情:启动一个新的线程来获取资源,完成后通过Handler机制发送消息,并在UI线程中处理消息,从而达到在异步线程中获取图片,然后通过Handler Message来更新            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-30 15:50:53
                            
                                70阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            写的一个图片缓存的demo,包括内存缓存和硬盘缓存,加载大量图片的时候感觉效果还是挺好的。直接上代码吧:package com.hongri.recyclerview.fragment;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragm            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-04 13:10:50
                            
                                63阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            无论大型或小型应用,灵活的缓存可以说不仅大大减轻了服务器的压力,而且因为更快速的用户体验而方便了用户。 Android的apk可以说是作为小型应用,其中99%的应用并不是需要实时更新的,而且诟病于蜗牛般的移动网速,与服务器的数据交互是能少则少,这样用户体验才更好,这也是我们有时舍弃webview而采用json传输数据的原因之一。  采用缓存,可以进一步大大缓解数据交互的压力,特此,我            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-26 11:16:52
                            
                                79阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            概述前面介绍过了,内存缓存主要是指在内部存储器存储数据,可能大家听得比较多的就是LruCache算法,里面会涉及到内存缓存,下面以就以Android中比较常见的两个控件,ListView/GridView跟RecyclerView来分析一下他们是如何通过缓存复用Item,来展示大量数据,由于ListView已经有很多人分析过,其中郭霖早期写了一篇文章Android ListView工作原理完全解析            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-05 23:57:11
                            
                                96阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            前言:
在上一篇文章中介绍了内存缓存,内存缓存的长处就是非常快。可是它又有缺点:空间小,内存缓存不可能非常大;内存紧张时可能被清除;在应用退出时就会消失,做不到离线。
基于以上的缺点有时候又须要第二种缓存,那就是磁盘缓存。大家应该都用过新闻client,非常多都有离线功能,功能的实现就是磁盘缓存。
DiskLruCache:
在Android中用到的磁盘缓存大多都是基于DiskLruCache实            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2017-04-13 08:56:00
                            
                                90阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            上个无奈的交接,基本没有写博客。在一次面试中被问到磁盘缓存答得有点尴尬。所以今天抽隔空回忆回忆。参考:    一,依赖(第一个是磁盘缓存的依赖,后面的是我demo需要的) compile 'com.jakewharton:disklrucache:2.0.2'
    compile files('libs/picasso-2.5.2.jar')
    compil            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-16 14:27:22
                            
                                59阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、概述  Android开发中,网络请求是很重要的一部分,而缓存网络请求来的图片或者响应结果字符串或者结果流,既可以省流量,同时也可以帮助我们解决无网或弱网情况下加载情况,当然也可以提升程序性能效率。纵所周知,缓存管理中肯定需要用到内存缓存,这里我们采用LruCache来管理内存的缓存。LruCahce虽然速度快,但是只是内存级别的缓存,为了实现持久化的缓存,我们还需要文件级别的缓存,也就是说我            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-28 17:01:32
                            
                                129阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Android中图片缓存简单介绍使用背景在你应用程序的UI界面加载一张图片是一件很简单的事情,但是当你需要在界面上加载一大堆图片的时候,情况就变得复杂起来。在很多情况下,(比如使用ListView, GridView 或者 ViewPager 这样的组件),屏幕上显示的图片可以通过滑动屏幕等事件不断地增加,最终导致OOM。为了保证内存的使用始终维持在一个合理的范围,通常会把被移除屏幕的图片进行回收            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-21 16:32:08
                            
                                44阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            作为一名程序猿,好的工具会让你在搬运工的道路上越走越远。以下框架是在开发过程中经常会使用到的一些好的框架。列在这里做一个小小的总结,包含但不限于此。1.缓存
RxCache  使用注解来为Retrofit配置缓存信息,内部使用动态代理和Dagger来实现。
ACache  ASimpleCache 是一个为android制定的 轻量级的 开源缓存框架。轻量到只有一个java文件            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-28 17:00:49
                            
                                122阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            无论大型或小型应用,灵活的缓存可以说不仅大大减轻了服务器的压力,而且因为更快速的用户体验而方便了用户。 Android的apk可以说是作为小型应用,其中99%的应用并不是需要实时更新的,而且诟病于蜗牛般的移动网速,与服务器的数据交互是能少则少,这样用户体验才更好,这也是我们有时舍弃webview而采用json传输数据的原因之一。  采用缓存,可以进一步大大缓解数据交互的压力,特此,我们简            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-11-21 17:36:59
                            
                                22阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            关于Android的三级缓存,其中主要的就是内存缓存和硬盘缓存。这两种缓存机制的实现都应用到了LruCache算法,今天我们就从使用到源码解析,来彻底理解Android中的缓存机制。一、Android中的缓存策略一般来说,缓存策略主要包含缓存的添加、获取和删除这三类操作。如何添加和获取缓存这个比较好理解,那么为什么还要删除缓存呢?这是因为不管是内存缓存还是硬盘缓存,它们的缓存大小都是有限的。当缓存            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-12 11:55:03
                            
                                71阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、背景RecyclerView是谷歌官方出的一个用于大量数据展示的新控件,可以用来代替传统的ListView,更加强大和灵活。弄清楚RecyclerView是否有足够的吸引力替换掉ListView,我从性能这一角度出发,研究RecyclerView和ListView二者的缓存机制,并得到了一些较有益的”结论”,待我慢慢道来。ListView与RecyclerView缓存机制原理大致相似,如下图所            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-21 20:53:12
                            
                                80阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            之前记着LruCache我们从网络下载好的图片现存入到内存,下次直接从内存读取整体读取速度都变快了,但是我们退出应用下次再进来相同的图片是否可以不用从网络读取,所以DiskLruCache就是做这方面的工作。由于DiskLruCache不是Android官方提供的类,所以我们需要导入该类,可以从Github上搜出来导入即可。DiskLruCache.open(file, BitmapUtil.ge            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-02 19:08:29
                            
                                45阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、概述  Android开发中,网络请求是很重要的一部分,而缓存网络请求来的图片或者响应结果字符串或者结果流,既可以省流量,同时也可以帮助我们解决无网或弱网情况下加载情况,当然也可以提升程序性能效率。纵所周知,缓存管理中肯定需要用到内存缓存,这里我们采用LruCache来管理内存的缓存。LruCahce虽然速度快,但是只是内存级别的缓存,为了实现持久化的缓存,我们还需要文件级别的缓存,也就是说我            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-10-19 23:00:30
                            
                                33阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            DiskLruCache和LruCache不同的是,LruCache是内存缓存,而DiskLruCache是指磁盘缓存,顾名思义就是把文件缓存到磁盘,也也就是手机的内存卡中。接下来先简单介绍DiskLruCache的使用方法。下载源码然后把源码中的三个类拷贝到工程中。DiskLruCache常用方法:方法备注DiskLruCache open(File directory, int appVers            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-07-26 20:29:01
                            
                                102阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            简单些一写要记得东西。打开缓存  调用DisLruCache 中的open方法public static DiskLruCache open(File directory, int appVersion, int valueCount, long maxSize)获取缓存地址的方法public File getDiskCacheDir(Context context, String uniqueN            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-27 16:20:10
                            
                                113阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            import java.lang.reflect.InvocationTargetException; 
  
 import java.lang.reflect.Method; 
  
 import java.util.List; 
  
 import android.app.Activity; 
  
 import android.content.Intent; 
  
 impor            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-26 13:30:39
                            
                                30阅读