ContentProvider是不同应用程序之间进行数据交换的标准API,ContentProvider以某种Uri的形式对外提供数据,允许其他应用访问或修改数据;其他应用程序使用ContentResolver根据Uri去访问操作指定数据。
人人网Android客户端也是使用ContentProvider对需要保存于Android客户端的数据进行管理。
1. renren.db
SQLLiteOpenHelper是Android提供的一个管理数据库的工具类,可用于管理数据库的创建和版本更新。一般的用法是创建SQLiteOpenHelper的子类,并扩展它的onCreate(SQLiteDatabase db)和onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion)方法。
人人网Android客户端使用该方法创建及修改用户手机中的人人网数据库(renren.db)。
下面是RenRenProvider$DatabaseHelper的代码:
  1. public class RenRenProvider$DatabaseHelper extends SQLiteOpenHelper {
  2. public RenRenProvider$DatabaseHelper(Context context) {
  3. super(context, "renren.db", null, 71);
  4. }
  5. @Override
  6. public void onCreate(SQLiteDatabase db) {
  7. db.execSQL("CREATE TABLE pic (_id INTEGER PRIMARY KEY,url TEXT UNIQUE ON CONFLICT REPLACE,_data TEXT,size INTEGER);");
  8. db.execSQL("CREATE TABLE account (_id INTEGER PRIMARY KEY,uid INTEGET,account TEXT UNIQUE ON CONFLICT REPLACE,pwd TEXT,proxy INTEGER,sessionkey TEXT,srt_key TEXT,ticket TEXT,name TEXT,headphoto BLOB,isdefault INTEGER,last_login INTEGER,friend_count INTEGER);");
  9. db.execSQL("CREATE TABLE home (_id INTEGER PRIMARY KEY,item_id INTEGER UNIQUE ON CONFLICT REPLACE,data BLOB);");
  10. db.execSQL("CREATE TABLE profile (_id INTEGER PRIMARY KEY,type INTEGER UNIQUE ON CONFLICT REPLACE,data BLOB);");
  11. db.execSQL("CREATE TABLE friends (_id INTEGER PRIMARY KEY,uid INTEGER UNIQUE ON CONFLICT REPLACE,username TEXT,headurl TEXT,doing TEXT,nameindex TEXT,namepinyin TEXT,friendgroup TEXT,network TEXT,gender TEXT,isfriend INTEGER,suggest_text_1 TEXT,suggest_intent_query TEXT);");
  12. db.execSQL("CREATE TABLE messages (_id INTEGER PRIMARY KEY,messageid INTEGER UNIQUE ON CONFLICT REPLACE,message BLOB);");
  13. db.execSQL("CREATE TABLE favorites (_id INTEGER PRIMARY KEY,favoriteid BIGINT UNIQUE ON CONFLICT REPLACE,favoriteowner INTEGER,type INTEGER,favorite BLOB);");
  14. db.execSQL("CREATE TABLE emonticons (_id INTEGER PRIMARY KEY,url TEXT,emotion TEXT  UNIQUE ON CONFLICT REPLACE,img BLOB,size INTEGER,_data TEXT);");
  15. db.execSQL("CREATE TABLE favoritefriends (_id INTEGER PRIMARY KEY,owner INTEGER,uid INTEGER,name TEXT);");
  16. db.execSQL("CREATE TABLE chathistory (_id INTEGER PRIMARY KEY,uid INTEGER,tochatid INTEGER,chatmessage TEXT,comefrom INTEGER,chatname TEXT,chattime LONG);");
  17. }
  18. @Override
  19. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  20. db.execSQL("DROP TABLE IF EXISTS pic");
  21. db.execSQL("DROP TABLE IF EXISTS account");
  22. db.execSQL("DROP TABLE IF EXISTS home");
  23. db.execSQL("DROP TABLE IF EXISTS profile");
  24. db.execSQL("DROP TABLE IF EXISTS friends");
  25. db.execSQL("DROP TABLE IF EXISTS messages");
  26. db.execSQL("DROP TABLE IF EXISTS favorites");
  27. db.execSQL("DROP TABLE IF EXISTS emonticons");
  28. db.execSQL("DROP TABLE IF EXISTS favoritefriends");
  29. db.execSQL("DROP TABLE IF EXISTS favoritefriends");
  30. db.execSQL("DROP TABLE IF EXISTS chathistory");
  31. onCreate(db);
  32. }
  33. }

复制代码

从代码中我们可以看到人人网Android客户端在用户手机上创建了renren.db数据库,数据库中共有10张表,分别为pic、account、home、profile、friends、messages、favorites、emonticons、favoritefriends、chathistory。
人人网官方Android客户端源码分析(2)
人人网官方Android客户端源码分析(3)

人人网官方Android客户端源码分析(1)相关推荐

  1. WordPress Blog Android客户端源码分析(一)

    一直想找一个大型的Android开源项目进行分析,由于自身和导师课程需要选择了wordpress的Android客户端源码进行学习和解读.源码github官方下载地址:开源项目地址.分析源码的最佳手段 ...

  2. 开源中国 OsChina Android 客户端源码分析(7)二维码生成对话框

    为什么80%的码农都做不了架构师?>>>    功能描述:主界面中点击"我"进入个人中心, 点击右侧二维码图标,弹出附有个人信息的二维码对话框. 1源码中的布局文 ...

  3. 开源中国android代码是什么,开源中国 OsChina Android 客户端源码分析(1)启动界面 app_start...

    1启动界面的布局文件为app_start.xml ,对应的类文件为net.oschina.app 包下的AppStart.java. 2对于布局文件而言,因为只显示一张主题图片,因此布局简单直接设置背 ...

  4. Eoe客户端源码分析---SlidingMenu的使用

    Eoe客户端源码分析及代码注释 使用滑动菜单SlidingMenu,单击滑动菜单的不同选项,可以通过ViewPager和PagerIndicator显示对应的数据内容. 0  BaseSlidingF ...

  5. Android HandlerThread 源码分析

    HandlerThread 简介: 我们知道Thread线程是一次性消费品,当Thread线程执行完一个耗时的任务之后,线程就会被自动销毁了.如果此时我们又有一 个耗时任务需要执行,我们不得不重新创建 ...

  6. Android ADB 源码分析(三)

    前言 之前分析的两篇文章 Android Adb 源码分析(一) 嵌入式Linux:Android root破解原理(二) 写完之后,都没有写到相关的实现代码,这篇文章写下ADB的通信流程的一些细节 ...

  7. grpc-go客户端源码分析

    grpc-go客户端源码分析 代码讲解基于v1.37.0版本. 和grpc-go服务端源码分析一样,我们先看一段示例代码, const (address = "localhost:50051 ...

  8. 【Android SDM660源码分析】- 02 - UEFI XBL QcomChargerApp充电流程代码分析

    [Android SDM660源码分析]- 02 - UEFI XBL QcomChargerApp充电流程代码分析 一.加载 UEFI 默认应用程序 1.1 LaunchDefaultBDSApps ...

  9. 【Android SDM660源码分析】- 03 - UEFI XBL GraphicsOutput BMP图片显示流程

    [Android SDM660源码分析]- 03 - UEFI XBL GraphicsOutput BMP图片显示流程 1. GraphicsOutput.h 2. 显示驱动初化 DisplayDx ...

最新文章

  1. (原创)cocos2dx-lua TableView官方demo分析
  2. 【新星计划】Python print输出带颜色 总结
  3. 方立勋_30天掌握JavaWeb_JSP
  4. LeetCode28 对称的二叉树-简单
  5. 我的专业博客启动了!
  6. 我通过了阿里面试,但算法太差,还是没去!
  7. Python实现立方体纹理映射
  8. 机器学习在企业管理中如何落地?25个行业近500名CIO这样说
  9. MongoDB MongoVue 客户端
  10. 计算机地图概括的原理,地图概括
  11. VMware12虚拟机安装
  12. 创维E900V21E、融合机DT741、咪咕MGV2000-非高安版-通刷线刷固件
  13. 西邮Linux兴趣小组2017纳新免试题揭秘
  14. linux(centos) 保存退出vi编辑
  15. Python快速搭建网站
  16. 打造一个丝滑般自动轮播无限循环Android库
  17. 西部数据OptiNAND:“闪”动的硬盘
  18. 日常BUG总结:虚拟机centos7无法识别网卡
  19. random.randint()用法
  20. 永磁同步电机(PMSM)参数辨识(二)

热门文章

  1. vue 输入表单库,在开发项目时节省大量时间
  2. 第十四届蓝桥杯大赛软件赛省赛(C/C++ 大学C组)
  3. QP状态机学习②——QM的使用
  4. matlab敏感性分析代码,sobol敏感性分析 matlab代码
  5. Java面试宝典(问题史上最全,总结最好)
  6. lseek illegal seek不能使用 linux 串口,lseek-lseek
  7. 开放式基金申购费用计算
  8. php中curl的详细解说
  9. 【Nature重磅】OpenAI科学家提出全新强化学习算法,推动AI向智能体进化
  10. BLDC电机控制算法——FOC简述