人人网官方Android客户端源码分析(1)

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.    
  6.     @Override   
  7.     public void onCreate(SQLiteDatabase db) {   
  8.         db.execSQL("CREATE TABLE pic (_id INTEGER PRIMARY KEY,url TEXT UNIQUE ON CONFLICT REPLACE,_data TEXT,size INTEGER);");   
  9.         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);");   
  10.         db.execSQL("CREATE TABLE home (_id INTEGER PRIMARY KEY,item_id INTEGER UNIQUE ON CONFLICT REPLACE,data BLOB);");   
  11.         db.execSQL("CREATE TABLE profile (_id INTEGER PRIMARY KEY,type INTEGER UNIQUE ON CONFLICT REPLACE,data BLOB);");   
  12.         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);");   
  13.         db.execSQL("CREATE TABLE messages (_id INTEGER PRIMARY KEY,messageid INTEGER UNIQUE ON CONFLICT REPLACE,message BLOB);");   
  14.         db.execSQL("CREATE TABLE favorites (_id INTEGER PRIMARY KEY,favoriteid BIGINT UNIQUE ON CONFLICT REPLACE,favoriteowner INTEGER,type INTEGER,favorite BLOB);");   
  15.         db.execSQL("CREATE TABLE emonticons (_id INTEGER PRIMARY KEY,url TEXT,emotion TEXT  UNIQUE ON CONFLICT REPLACE,img BLOB,size INTEGER,_data TEXT);");   
  16.         db.execSQL("CREATE TABLE favoritefriends (_id INTEGER PRIMARY KEY,owner INTEGER,uid INTEGER,name TEXT);");   
  17.         db.execSQL("CREATE TABLE chathistory (_id INTEGER PRIMARY KEY,uid INTEGER,tochatid INTEGER,chatmessage TEXT,comefrom INTEGER,chatname TEXT,chattime LONG);");   
  18.     }   
  19.    
  20.     @Override   
  21.     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {   
  22.         db.execSQL("DROP TABLE IF EXISTS pic");   
  23.         db.execSQL("DROP TABLE IF EXISTS account");   
  24.         db.execSQL("DROP TABLE IF EXISTS home");   
  25.         db.execSQL("DROP TABLE IF EXISTS profile");   
  26.         db.execSQL("DROP TABLE IF EXISTS friends");   
  27.         db.execSQL("DROP TABLE IF EXISTS messages");   
  28.         db.execSQL("DROP TABLE IF EXISTS favorites");   
  29.         db.execSQL("DROP TABLE IF EXISTS emonticons");   
  30.         db.execSQL("DROP TABLE IF EXISTS favoritefriends");   
  31.         db.execSQL("DROP TABLE IF EXISTS favoritefriends");   
  32.         db.execSQL("DROP TABLE IF EXISTS chathistory");   
  33.         onCreate(db);   
  34.     }   
  35. }   
复制代码
从代码中我们可以看到人人网Android客户端在用户手机上创建了renren.db数据库,数据库中共有10张表,分别为pic、account、home、profile、friends、messages、favorites、emonticons、favoritefriends、chathistory。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值