Android内容观察者

内容观察者是做什么的?

内容观察者主要用来观察数据库是否被操作了。

以查询数据库为例:

 

首先注册一个内容观察者(App1):

 1 //false 观察的Uri必须是一个确切的Uri  如果是true,只需要匹配一个主机名,后面所有的操作都生效
 2         getContentResolver().registerContentObserver(uri,true,new MyContentObserver(new Handler()));
 3 
 4 
 5 private class MyContentObserver extends ContentObserver{
 6 
 7         /**
 8          * Creates a content observer.
 9          *
10          * @param handler The handler to run {@link #onChange} on, or null if none.
11          */
12         public MyContentObserver(Handler handler) {
13             super(handler);
14         }
15 
16         //当观察的Uri发生改变的时候执行
17         @Override
18         public void onChange(boolean selfChange) {
19             System.out.println("数据库被操作了!!!!!");
20             super.onChange(selfChange);
21         }
22     }

 

onChange()方法:当观察的Uri的数据库被操作的时候,会执行onChange()方法。

 

App2操作数据库:

 1     private void doQuery(){
 2         Uri uri = Uri.parse("content://com.coderwei.provider/query");
 3         Cursor cursor = getContentResolver().query(uri,new String[]{"name","money"},null,null,null);
 4 
 5 
 6         if (cursor!=null){
 7             //如果操作了数据库,就发出一个通知
 8             this.getContentResolver().notifyChange(uri,null);
 9             while (cursor.moveToNext()){
10                 String name = cursor.getString(0);
11                 String money = cursor.getString(1);
12                 System.out.println("name:"+name+"  money: "+money);
13             }
14         }
15     }

 

转载于:https://www.cnblogs.com/Godfunc/p/6065547.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值