自定义数据库中使用 contentObserver

系统自带的数据库的Provider中都有通知该数据库观察者数据库更新的机制。

比如在CallLogProvider的代码中发现了通知数据库进行更新了。代码如下:

  protected void notifyChange() {
        getContext().getContentResolver().notifyChange(CallLog.CONTENT_URI, null,
                false /* wake up sync adapters */);
    }

要想在自定义的数据库中也能使用ContentObserver,必须在数据库Dao中所有修改数据的方法中添加如下代码:

getContext().getContentResolver().notifyChange(自定义uri, null)

在你要使用ContentObserver的地方注册该uri的观察者;

例如:

1.Dao中通知更新:

public boolean insert(String packname) {
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("packname", packname);
long id = db.insert("lockinfo", null, values);
db.close();
if(id!=-1){
context.getContentResolver().notifyChange(
Uri.parse("content://com.mobilesecurity.updateLockDb"),
null);

return true;
}
return  false;
}

public boolean delete(String packname) {
SQLiteDatabase db = helper.getWritableDatabase();
int count = db.delete("lockinfo", "packname = ?",
new String[] { packname });
db.close();
if (count > 0) {
context.getContentResolver().notifyChange(
Uri.parse("content://com.mobilesecurity.updateLockDb"),
null);

return true;
}
return  false;
}


2. 注册ContentObserver:

observer =new MyDbObserver(new Handler());
Uri uri = Uri.parse("content://com.mobilesecurity.updateLockDb");
getContentResolver().registerContentObserver(uri, true, observer);


这样就可以在自定义的数据库中使用内容观察者了。


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值