文章出處
文章列表
內容觀察者是做什么的?
內容觀察者主要用來觀察數據庫是否被操作了。
以查詢數據庫為例:
首先注冊一個內容觀察者(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 }
文章列表
全站熱搜