內容觀察者使用(程序鎖應用中的使用)
1.在Dao層的增刪改查方法中,添加一句代碼,通知內容觀察者,數據庫發生改變。
context.getContentResolver().notifyChange(Uri.parse("content://applock/change"), null);
參數1:自定義Uri,在註冊內容觀察者時匹配
2.在需要使用內容觀察者的類中(即DogService),註冊內容觀察者。一旦數據庫的數據發生改變,就要調用內容觀察者中的onchange方法,在這裏就是再一次findAll().
//使用內容觀察者,觀察數據庫數據的改變
MyContentObserver myContentObserver = new MyContentObserver(new Handler());
getContentResolver().registerContentObserver(Uri.parse("content://applock/change"),true, myContentObserver);
class MyContentObserver extends ContentObserver{
public MyContentObserver(Handler handler) {
super(handler);}
//當數據庫數據發生改變時調用該方法
@Override
public void onChange(boolean selfChange) {
//當數據庫數據發生改變時再查一次數據庫
new Thread(){
public void run() {
//耗時操作,在子線程中進行
lockAppList = appLockDao.findAll();
};
}.start();}}
內容觀察者使用(程序鎖應用中的使用)