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     }

 

posted @ 2016-11-15 14:21  Godfunc  阅读(683)  评论(0编辑  收藏  举报