内容观察者使用(程序锁应用中的使用)

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

原文地址:https://www.cnblogs.com/kim-liu/p/7337025.html