文章出處

內容觀察者是做什么的?

內容觀察者主要用來觀察數據庫是否被操作了。

以查詢數據庫為例:

 

首先注冊一個內容觀察者(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     }

 


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()