内容观察者

内容观察者

在对数据库操作的时候,有时候我们会遇见一些特殊的需求,要求应用3去观察应用1数据库中的数据由于应用2发生的变化,通常大家都会想到可以使用广播的方式,但是android中对此创建了一个API,ContentObserver(内容观察者),就是用来观察数据库一旦改变就发出消息。让使用者做出处理。

内容观察者如何使用:

【1】注册内容观察者

Uri uri =uri.parse("content://com.aaa.provider);
//其中第二参数时一个boolean,如果为true,表示uri可以时非完整的路径,如果是false,就必须要是一个完整的uri,
上面的uri就是非完整的。第三个参数是contentReserver
getContentResolver().registerContentObserver(uri,true,new MyContentObserver);

第三个参数需要内容观察者,我们就定义一个。这个类是一个抽象类,所以我们必须要去继承。

private class MyContentObserver extends ContentObserver{

/**
 * Creates a content observer.
 *
 * @param handler The handler to run {@link #onChange} on, or null if none.
 */
public MyContentObserver(Handler handler) {
    super(handler);
}

/**
 * 当内容发生改变时调用
 * @param selfChange
 */
@Override
public void onChange(boolean selfChange) {
    Log.e("------------","数据库发生改变");
    super.onChange(selfChange);
}
}

同时要想接收到数据库改变的消息,我们还必须要在其他应用对数据库操作后自己发送一个消息,

 getContext(). getContentResolver().notifyChange(uri,observer);其中第二个参数为内容观察者,如果知道要发送的对象,可以直接指定,
如果想要发送给多个内容观察者,或者不清楚接收者,就可以指定为null

这样我们就可以在数据发生改变的时候接收到消息,然后做出相应的处理,比如我们的图片库或者媒体库,如果有一个应用添加了一张图片或者一段音乐到数据库,并且发送了消息给内容观察者,这时候图片库和媒体库就可以刷新数据,接收到新的数据,不然图片库或者媒体库中是无法找到该数据的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值