android 缓存功能吗,Android开发实现实现缓存功能

以论坛为例,只缓存最新的20条帖子 用到sqlite

流程:1. 创建数据库文件和表

db.execSQL("CREATE TABLE table"

"(_id INTEGER PRIMARY KEY AUTOINCREMENT,subject VARCHAR(200),author VARCHAR(20),    dateline VARCHAR(20),replies VARCHAR(20),tid VARCHAR(20)";

2. 查询、插入、删除

//插入

public static void insert(SQLiteDatabase db, ContentValues values)

{

db.insert(”reclist“, null, values);

}

//删除

public static void delete(SQLiteDatabase db)

{

db.delete(”reclist“, null, null);

}

//查询前先建PostInfo封装类,把得到的数据添加到ArrayList容器里

//查询

public static ArrayList query(SQLiteDatabase db)

{

Cursor cursor = db.query("reclist", null, null, null,

null, null, null);

ArrayList data = new ArrayList();

boolean hasNext = cursor.moveToFirst();

while (hasNext)

{

String author = cursor.getString(cursor

.getColumnIndex("author "));

String dateline = cursor.getString(cursor

.getColumnIndex("dateline"));

String replies = cursor.getString(cursor

.getColumnIndex("replies"));

String subject = cursor.getString(cursor

.getColumnIndex("subject"));

int tid = cursor.getInt(cursor

.getColumnIndex("tid"));

PostInfo info = new PostInfo(subject, author, dateline, replies,

tid);

data.add(info);

hasNext = cursor.moveToNext();

}

cursor.close();

return data;

}

3. 得到最新20条时,删除数据库表的内容 ,再插入

4. 启动时查询数据库

5. 如果有网络,从网络获取最新内容后,清空ListView,使用最新内容

//把查询到的内容添加到集合去

ArrayList query = DataBaseUtils.query(mDB);

if (query.size() > 0)

{

mPostInfoList.addAll(query);

}

//在jsonArray解析的时候删除前面的内容

JSONArray array = new JSONArray(result);

if (array.length() > 0 && mPage == 1)

{

mPostInfoList.clear();

}

for (int i = 0; i < array.length(); i++)

{

JSONObject jsonObject = array.getJSONObject(i);

int tid = jsonObject.getInt("tid");

String hottopic_title = jsonObject.getString("subject");

String hottopic_name = jsonObject.getString("author");

String hottopic_shijian = jsonObject.getString("dateline");

String hottopic_huiying = jsonObject.getString("replies");

downloadData = new PostInfo(hottopic_title, hottopic_name,

hottopic_shijian, hottopic_huiying, tid);

mPostInfoList.add(downloadData);

}

if (mPage == 1)

{

// 删除旧的数据

DataBaseUtils.delete(mDB);

// 将最新20条保存到数据库中

for (int i = 0; i < mPostInfoList.size(); i++)

{

PostInfo info = mPostInfoList.get(i);

ContentValues values = new ContentValues();

values .put(TABLE_RECLIST.COLUMN_AUTHOR, info.getAuthor());

values.put(TABLE_RECLIST.COLUMN_DATELINE, info.getDateline());

values.put(TABLE_RECLIST.COLUMN_REPLIES, info.getReplies());

values.put(TABLE_RECLIST.COLUMN_SUBJECT, info.getSubject());

values.put(TABLE_RECLIST.COLUMN_TID, info.getTid());

DataBaseUtils.insert(mDB, values );

}

}

mAdapter.notifyDataSetChanged();

原文:http://henrytong.blog.51cto.com/8603737/1384090

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值