eoe源码阅读(一)
这两天阅读了eoe客户端(android),有关数据库部分,这里数据库对图片请求url进行了缓存。
为什么先去分析数据库部分,android的应用把数据库和网络部分搞定,其他的部分跟着界面(Activity走),
用到哪个控件之类的再去查查。由于eoe的业务逻辑并不复杂所以也不是重点。这里就采用数据流的方式对源码进行
分析,看看数据流从从哪里来,干啥用。
相关工具:
(1)SQLite Export来看数据库的信息;
(2)Blumind(思维导图)来分析各个类之间层次及逻辑关系;
首先我们看到cn.eoe.app.db包下的文件,
分析之后得出这样子的结论:
(1)类DatabaseColumn被BlogColumn、DetailColumn、ImageCacheColumn、NewsColumn、RequestCacheColumn类继承;
(2)BlogColumn、DetailColumn、ImageCacheColumn、NewsColumn、RequestCacheColumn类中定义了相关的表名,
字段名和字段类型;
(3)在DatabaseColumn中依次创建了其子类对应的数据表(比较巧妙);
---------------------------------------------------------------------------------------------------------------
(4)DBHelper和DBProvider分别封装了对数据库的具体操作,insert、delete、update、query等;
a、DBHelper是直接对db操作,而DBProvider则是通过ContentProvider对db进行操作。
b、DBHelper程序中对DetailColumn、ImageCacheColumn、RequestCacheColumn进行实际操作,
而DBProvider程序中对BlogColumn、NewsColumn并未进行实际操作,仅仅留下了接口。
我们可以通过adb shell进入到android操作系统看看eoe产生的数据库如图:
使用SQLite Expert打开其中的eoecn数据库,如下图:
这里有图片的缓存,请求的缓存,评论的数据表,博客的数据表(程序中没有使用),新闻的数据表(程序中没有是使用);
需要带着一下问题去看看程序如何操作这些数据的:
(1)什么时机缓存这些数据?
(2)数据保存多久;何时删除这些数据?
谈谈自己阅读源码的一些方法,
(1)注释,把需要看的这部分代码认真的注释一遍,注释的过程中就是不断提问题和解答问题的过程;
(2)使用Blumind把思维导图画出来,这个过程也是利于加深和复习层次关系;
(3)调试的过程容易理清逻辑关系,验证上述1、2步骤自己得出的结论;
其实直接调试也是可以,但自己感觉对于不熟悉的源码,直接调试容易陷入一个大的逻辑中而出不来,
经过1、2的工作之后,调试的时候,很多逻辑就衔接起来了,感觉就好象在验证自己的想法一样。
更多相关文章
- Android如何导入已有的外部数据库(在raw下自己导入db文件)
- Android(安卓)SQLite 开发教程(2): android.database.sqlite 类
- Android(安卓)平滑图片加载和缓存库 Glide 使用详解
- 捕获Android文本中链接点击事件
- Android应用优化(7)数据库操作
- Android如何连接MySQL数据库
- Android(安卓)的 Sqlite基本操作
- Android(安卓)webView 缓存 Cache + HTML5离线功能解决
- Android(安卓)SQLite教程:内部架构及SQLite使用办法