android 中的缓存机制与实现(杰瑞教育原创)

android 中的缓存机制与实现(杰瑞教育原创)

ID:14309798

大小:217.66 KB

页数:5页

时间:2018-07-27

android 中的缓存机制与实现(杰瑞教育原创)_第1页
android 中的缓存机制与实现(杰瑞教育原创)_第2页
android 中的缓存机制与实现(杰瑞教育原创)_第3页
android 中的缓存机制与实现(杰瑞教育原创)_第4页
android 中的缓存机制与实现(杰瑞教育原创)_第5页
资源描述:

《android 中的缓存机制与实现(杰瑞教育原创)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、烟台杰瑞教育科技有限公司Android中的缓存机制与实现  Android开发本质上就是手机和互联网中的web服务器之间进行通信,就必然需要从服务端获取数据,而反复通过网络获取数据是比较耗时的,特别是访问比较多的时候,会极大影响了性能,Android中可通过二级缓存来减少频繁的网络操作,减少流量、提升性能。一、二级缓存工作机制  所谓二级缓存实际上并不复杂,当Android端需要获得数据时比如获取网络中的图片,我们首先从内存中查找(按键查找),内存中没有的再从磁盘文件或sqlite中去查找,若磁盘中也没有

2、才通过网络获取;当获得来自网络的数据,就以key-value对的方式先缓存到内存(一级缓存),同时缓存到文件或sqlite中(二级缓存)。注意:内存缓存会造成堆内存泄露,所有一级缓存通常要严格控制缓存的大小,一般控制在系统内存的1/4。  理解了二级缓存大家可能会有个问题网络中的数据是变化的,数据一旦放入缓存中,再取该数据就是从缓存中获得,这样岂不是不能体现数据的变化?我们在缓存数据时会设置有效时间,比如说30分钟,若超过这个时间数据就失效并释放空间,然后重新请求网络中的数据。有的童鞋就问30分钟内咋办?

3、那好吧,我也没招了,只有下拉刷新了,实际上这不是问题。二、二级缓存的实现  如何实现二级缓存,有很多技术方案,在这里我们使用ASimpleCache框架来给大家演示一下,通过名字就可以看出它是很容易实现的。烟台杰瑞教育科技有限公司1、ACache介绍   ASimpleCache是一个轻量级的开源cache框架,实际上就是一个叫ACache的java类。已经在商业项目中使用,运行效果不错。  下载地址:https://github.com/yangfuhai/ASimpleCache2、ACache使用 

4、 我们先做一个实现数据缓存的案例,然后再归纳一下主要的方法  编写NewsListActivity主要代码如下:publicclassNewsListActivityextendsActivity{privateListlist;privateListViewlistView;privateLoadImageAdapteradapter;//适配器privateACacheacache;//缓存框架@OverrideprotectedvoidonCreate(BundlesavedInstan

5、ceState){//TODOAuto-generatedmethodstubsuper.onCreate(savedInstanceState);super.setContentView(R.layout.load_img_listview_activity);acache=ACache.get(this);//创建ACache组件initView();//初始化界面,代码不贴了}publicvoidloadData(){StringcacheData=acache.getAsString("newsL

6、ist");//从缓存中取数据if(cacheData!=null){//如果缓存中有,就不访问网络ListnewsList=gson.fromJson(cacheData,newTypeToken>(){}.getType());//将json转为Listlist.addAll(newsList);adapter.notifyDataSetChanged();return;}newThread(newRunnable(){@Overridepublicvoidrun()

7、{烟台杰瑞教育科技有限公司//TODOAuto-generatedmethodstubSystemClock.sleep(2000);//模拟网络耗时Stringjson=request();//模拟从网络中获取json数据acache.put("newslist",json,60*60*1);//将数据存入缓存中,有效时间设置为1小时ListnewsList=gson.fromJson(json,newTypeToken>(){}.getType());list.add

8、All(newsList);handler.sendEmptyMessage(1);}}).start();}/***模拟网络请求方法*@returnjson数据*/privateStringrequest(){Newsnews=null;for(inti=0;i<10;i++){news=newNews();news.setId(i);news.setImgUrl("course/img/face_"+i+".png");n

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。