當(dāng)前位置:
首頁(yè) >
Android内容观察者
發(fā)布時(shí)間:2025/7/14
43
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Android内容观察者
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
內(nèi)容觀察者是做什么的?
內(nèi)容觀察者主要用來(lái)觀察數(shù)據(jù)庫(kù)是否被操作了。
以查詢數(shù)據(jù)庫(kù)為例:
?
首先注冊(cè)一個(gè)內(nèi)容觀察者(App1):
1 //false 觀察的Uri必須是一個(gè)確切的Uri 如果是true,只需要匹配一個(gè)主機(jī)名,后面所有的操作都生效 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 //當(dāng)觀察的Uri發(fā)生改變的時(shí)候執(zhí)行 17 @Override 18 public void onChange(boolean selfChange) { 19 System.out.println("數(shù)據(jù)庫(kù)被操作了!!!!!"); 20 super.onChange(selfChange); 21 } 22 }?
onChange()方法:當(dāng)觀察的Uri的數(shù)據(jù)庫(kù)被操作的時(shí)候,會(huì)執(zhí)行onChange()方法。
?
App2操作數(shù)據(jù)庫(kù):
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 //如果操作了數(shù)據(jù)庫(kù),就發(fā)出一個(gè)通知 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 }?
轉(zhuǎn)載于:https://www.cnblogs.com/Godfunc/p/6065547.html
總結(jié)
以上是生活随笔為你收集整理的Android内容观察者的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 1191: 冰法斗神龙 暴力枚举
- 下一篇: 我的第一个Android程序