为了保证不重复加载数据,节省用户流量。
这里只说明原理,会在以后详细的补充代码。首先从内存读取数据,判断是否有数据,如果内存中没有读到数据就从本地中读取,本地如果也没数据,就访问网络加载数据。
那么数据是如何在内存中缓存的呢?首先这里要介绍三种引用,强引用,软引用,弱引用。
那么什么是强引用?强引用就是直接引用,不会被系统自动回收掉。
什么是软引用?软引用就是除了我们没有地方引用,如果内存不足会被系统自动回收。
什么是弱引用?弱引用就是除了我没也没有地方引用,如果内存不足更容易被系统自动回收。还有一种虚引用,就是没有地方引用,特别容易被系统回收。
以前都是缓存在软引用中,但是谷歌更新版本,现在软引用特别容易被系统回收,不安全。
为此有一种lrucache引用,内部是一种很少使用时的算法,就是删除的是最近最少使用。
其实就是用map进行存储的,根据一定的算法移除最不常用的value。
当程序结束,内存缓存就全部清除,我们就需要本地缓存。
下面介绍本地缓存:什么是本地缓存?本地缓存就是以Url为文件名称,以网络上加载的数据为内容,存储的文件中。
当我们需要数据时,就读取文件进行解析。
如果连本地也没有数据,就访问网络加载数据。
当访问成功后,把数据存储到本地,防止重复加载两次数据,浪费流量。
下面是本找找的资料《面试宝典》,用于大家