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();}}