请问没网络还能正常显示页面的缓存方法?
来源:8-1 编写自己的元注解和annotationProcessor
Perston
2019-06-14
以淘宝APP为例在没有任何网络的情况下,它还能正常打开以前仿问过的页面。重新打开APP没网络它还是有数据显示,我们的电商APP能不能做到?怎样做最好?
我自己曾经实现过这个功能,我是用文件保存做了持久化的操作。把每一次请求服务器的api和请求的参数拼成一个字符串作为key,把返回成功的结果Json数据作为value,以键值对的形式一条的保存在文件里。当没有网络时就从文件中取出来遍历这些数据看有没有和key对应的数据,有就返回数据确保有东西显示。
我的疑问是这样做对吗?三种持久化方式SharedPreference、文件保存、Sql我应该用那种更好一些?每次没网络就直接从文件中取出数据,个人感觉很耗电,损耗很大,是不是应该一次性把它都缓存在内存中,又纠结内存用得过多?是不是应用每天只保存一次数据到文件中,但又纠结购物车页的数据在没网络的时候不同步?
老师能不能说一下你对数据缓存策略?和缓存方式?
写回答
1回答
-
傅猿猿
2019-06-15
嗯,这种策略的话一般是有三种实现方式,你可以参考一下,这是我在真实的项目中去这样去运用的。首先呢,第1种缓存方式是使用文件,也就是说你可以把htm l或者是xm l文件缓存到一个指定的目录,然后呢,下次再启用这个页面的时候,你可以先检测一下网络是否通畅,如果不通畅就直接加载这个缓存的旧页面。第2种呢,是在web view的设置里面,把缓存设置成default,这个时候webview自己就会去判断,如果没有网络的时候它就会进行缓存,当然这个是你不可控的,我不是很推荐。最高级的一种缓存策略就是使用sharedpreference或者是sqlite,你可以缓存你的相对应的数据关系,也可以缓存一个单纯的文本,比如说ht ml页面。
00
相似问题