Android应用开发之Android实现界面内容缓存的详细教程
凌雪 2018-09-21 来源 :网络 阅读 557 评论 0

摘要:本文将带你了解Android应用开发之Android实现界面内容缓存的详细教程,希望本文对大家学Android有所帮助。

本文将带你了解Android应用开发之Android实现界面内容缓存的详细教程,希望本文对大家学Android有所帮助。


关于缓存的话题,想必大家都耳熟能详了。对于缓存,每个人也都会有各自的见解。缓存的原理大同小异,今天就和大家唠唠在Android中如何将界面中的内容进行缓存。
    本篇文章将围绕如何使用SQLite数据库对数据进行缓存。
    关于缓存机制的流程不多说了,大家也都清楚,我将流程以伪代码的方式直接贴出:
    if(有网络) {
    if(有缓存 && 缓存时间没有过期) {
    getCacheContent—>取出缓存的内容
    showContent();—->显示缓存的内容:例如List显示到ListView
    } else {
    presenter.loadData();—>请求服务器拉取数据
    }
    } else {
    //没有网络的情况下
    if(有缓存) {
    getCacheContent—>取出缓存的内容
    showContent();—->显示缓存的内容:例如List显示到ListView
    } else {
    showNetErrorView();—>显示无网络界面
    }
    }
    上面就是缓存的伪代码。相信大家都能看懂。其实原理很简单,就是根据有无网络的情况来处理:
    1.有网络:
    (1)有缓存,并且缓存没有过期取缓存的数据。
    (2)没有缓存或者缓存过期了,直接请求服务器拉取新数据。
    2.无网络:
    (1)有缓存。
    (2)显示网络错误提示界面。
    缓存的基本流程说完了,接下来我们来看下在实际开发中如何去处理。
    1.创建SQLite数据库。我们来看核心代码
    /**
     * Created by Song on 2016/3/27.
     */
    public class SQLiteDataHelper extends SQLiteOpenHelper{
        private static SQLiteDataHelper instance;
        public static SQLiteDataHelper getInstance(Context context)   {
            if(instance == null) {
                synchronized   (SQLiteDataHelper.class) {
                    if(instance ==   null) {
                          instance = new SQLiteDataHelper(context);
                    }
                }
            }
            return instance;
        }
    创建SQLiteOpenHelper并实现单例模式。
    2.创建表
    一般我们缓存大致分为以下几个字段:缓存时间,缓存内容,缓存的内容标示,缓存标示我们一般用请求的URL作为唯一内容标示。
    public static final String CREATE_CACHE_TABLE_SQL =
            "CREATE TABLE " + TABLE_CACHE_NAME +   "(" +
                    CACHE_ID +"   integer primary key autoincrement," +
                    CACHE_URL +"   TEXT,"+
                    CACHE_TIME +"   TEXT," +
                    CACHE_CONTENT   +" TEXT)";
    3.根据我们上面定义的流程,我们需要4个方法:
    (1)是否缓存
    (2)缓存数据
    (3)获取缓存数据
    (4)缓存是否过期
    4.分别实现上面的4个方法:
    (1)是否缓存:
    判断是否缓存,我们只需要根据URL去数据库查询是否有该项的内容存在,如果cursor的count ==   0,即表明数据库还没有缓存该URL所对应的内容。
    (2)缓存数据
    缓存数据的时候,要分两种情况:
    1>该URL所对应的内容已经缓存过,那么我们需要去更新已经缓存的内容,即执行UPDATE操作。
    2>第一次缓存,那么我们直接执行INSERT,将数据添加到数据库即可。
    (3)获取缓存数据
    获取缓存数据,我们只需要根据URL去查询对应的缓存内容即可。即执行SELECT操作。
    (4)缓存是否过期
      在缓存数据的时候,我们会保存缓存时的时间。判断缓存是否过期,我们只需要取出缓存的时间与当前时间相比较,如果间隔了某一个时间(例如一小时),那么我们就让其作为过期数据。
    OK,到这里,基本的缓存流程已经全部完毕了。大家现在是不是对缓存已经了如指掌了!下面,我们说几个需要注意的地方:
    (1)操作Cursor完毕后,调用close()关闭,以免浪费内存资源。
    (2)SQLiteOpenHelper创建的实例,需要一个Context。我们在传入时,尽量使用ApplicationContext。避免引起内存泄漏的问题。
    好啦,关于Android实现缓存机制的内容就全部结束了,希望大家喜欢!    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注移动开发之Android频道!

本文由 @凌雪 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程