【凯子哥带你做高仿】“煎蛋”Android版的高仿及优化(三)

到目前为止,煎蛋的Android项目算是告一段落了,功能基本都已完成,那么今天,我就介绍一下在煎蛋这个项目里,是怎么完成数据缓存功能的。想看代码的请戳煎蛋项目的GITHUB地址

转载请注明出处:

缓存功能的解决方案

因为算是一个阅读类的应用,所以说如果在无网络情况下,用户打开App还能看到内容的话,属于比较好的用户体验。那么,这就涉及到本地缓存了。

本地缓存有好多解决方案,比如说存数据库里面,或者是存文件里面,甚至可以存在SharedPrefrence里面。我个人更倾向于保存在数据库里面,因为这样进行一些基本操作比较简单。

在煎蛋项目中,缓存数据分成两部分,一部分是请求接口的数据,包括图片url、发布者、段子等等文本类型数据,另外一部分则是图片缓存了。因为UIL已经完成了图片本地缓存功能,所以说,我们只需要缓存请求接口返回的数据就可以了。

既然是缓存在数据库,我们就可以使用Sqlite了,但是直接用Sqlite吧,比较麻烦,那么有木有好用的ORM框架呢?当然有,GreenDao就是比较好的一个ORM框架。因为之前没试过怎么用,就趁着这次机会用用吧,但是真用起来,才发现配置起来确实麻烦,所以下面就介绍下如何使用GreenDao来完成数据库缓存,这应该是最新的GreenDao的使用介绍了。

配置GreenDao

GreenDao使用的时候,需要添加一个辅助项目,来生成数据库的实体类和Dao类。 流程如下: 1. 选中项目 2. 右键 3. new Module 4. 选择类型为Java Library 5. 然后按照下面自己填写,左边是完成的,右边是你要填写的

这样写了之后,我们就有了一个辅助项目了。下面,我们就需要为我们的附注项目添加依赖,所以呢,打开build.gradle文件,然后像下面一样,把我们的依赖库 greendao-generator:1.3.1 添加进去

apply plugin: ‘java’repositories {mavenLocal()mavenCentral()}dependencies {compile ‘de.greenrobot:greendao-generator:1.3.1’}sourceSets {main {java {srcDir ‘src/main/java’}}}artifacts {archives jar}

然后就可以在创建的类文件里面,写上下面的代码。当然了,这是煎蛋项目里面的,其他用法你需要自己google:

/** * 用来为GreenDao框架生成Dao文件 */{String DAO_PATH = “../app/src/main/java-gen”;String PACKAGE_NAME = “com.socks.greendao”;DATA_VERSION_CODE = 1;(String[] args) throws Exception {Schema schema = new Schema(DATA_VERSION_CODE, PACKAGE_NAME);addCache(schema, “JokeCache”);addCache(schema, “FreshNewsCache”);addCache(schema, “PictureCache”);addCache(schema, “SisterCache”);addCache(schema, “VideoCache”);//生成Dao文件路径new DaoGenerator().generateAll(schema, DAO_PATH);}/*** 添加不同的缓存表* @param schema* @param tableName*/(Schema schema, String tableName) {Entity joke = schema.addEntity(tableName);//主键id自增长joke.addIdProperty().primaryKey().autoincrement();//请求结果joke.addStringProperty(“result”);//页数joke.addIntProperty(“page”);//插入时间,暂时无用joke.addLongProperty(“time”);}}

因为我们需要缓存所有的功能模块,所以呢,调用addCache方法,然后传进去表名就ok啦。

注意在addCache方法里面,我们就四个字段,主键id,接口请求数据result,页码page,添加时间time。因为这几个功能模块的数据很相似,所以这个方法可以复用,如果你需要其他字段,自己使用addXXXProperty()即可。

好了,现在我们的辅助项目就完成了,下面,就需要运行起来,生成辅助文件了。

打开工具栏的这个窗口

点击Edit Configurations,在打开的界面里面,点击左上角的+号,然后选择Application,然后按照下面的提示,把对应位置属性设置好

设置好了,点击OK,然后这时候在工具栏里面,就可以选中我们新创建的项目,然后点击运行,出现下面的提示,就说明我们的辅助实体类和Dao类创建好了。

不信?你打开我们的项目看看,是不是都创建好了~

Ok,到了这一步,我们的任务已经完成50%了。因为找了很多资料,中文英文的都有,要不就是版本太老,要不就是说的不对,就是没有一个成功的,花了好长时间才完成GreenDao的环境搭配,希望这一步对你有所帮助。

实现缓存功能

其实配置好GreenDao之后,后面的工作就是小意思了。

我先说下煎蛋项目里面缓存的思路,当然了,这种实现比较简单,你完全可以扩展。

首先,当有网络连接的时候,我们每次获取新数据的时候,都需要把获取的数据和对应的页码保存进数据库。如果用户执行刷新操作,之前的数据就没用了,直接清除,然后再次把新数据保存起来。当手机是无网络状况的时候,根据页码直接从缓存数据库拿出数据,然后展现出来。对于段子这种纯文本文件,可以让用户查看缓存的文本内容,而对于无聊图这种图片文件,用于有UIL的文件缓存,所以根据我们缓存的url地址,也可以查看图片。

好了,整理了一下思路,下面说一下具体代码实现。

首先,使用GreenDao,我们需要重点关注DaoSession和DaoMaster这两个类,因为我们如果想获取到我们的Dao类,就需要用DaoSession获取。

人之相识,贵在相知;人之相知,贵在知心。

【凯子哥带你做高仿】“煎蛋”Android版的高仿及优化(三)

相关文章:

你感兴趣的文章:

标签云: