这两天阅读了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的工作之后,调试的时候,很多逻辑就衔接起来了,感觉就好象在验证自己的想法一样。



更多相关文章

  1. Android如何导入已有的外部数据库(在raw下自己导入db文件)
  2. Android(安卓)SQLite 开发教程(2): android.database.sqlite 类
  3. Android(安卓)平滑图片加载和缓存库 Glide 使用详解
  4. 捕获Android文本中链接点击事件
  5. Android应用优化(7)数据库操作
  6. Android如何连接MySQL数据库
  7. Android(安卓)的 Sqlite基本操作
  8. Android(安卓)webView 缓存 Cache + HTML5离线功能解决
  9. Android(安卓)SQLite教程:内部架构及SQLite使用办法

随机推荐

  1. Android中textview显示不全的问题
  2. android面试题总结加强再加强版(三)
  3. Firefox OS 学习——manifest.webapp结构
  4. Android控件复习之TextView与EditText
  5. Android(安卓)Support Library-FloatingA
  6. Android下使用正则表达式
  7. android 运行时生成dex文件,并装载调用
  8. Android(安卓)Studio gradle 使用最新版
  9. Android实际开发中遇到的问题和部分解决
  10. 遇到Android(安卓)SDK Build-tools V19