Android ContentProvider之ContentObserver内容观察者

来源:互联网 发布:java八种基本类型 编辑:程序博客网 时间:2024/06/06 00:32

内容观察者
* 当数据库数据改变时,内容提供者会发出通知,在内容提供者的uri上注册一个内容观察者,就可以收到数据改变的通知

    cr.registerContentObserver(Uri.parse("content://sms"), true, new MyObserver(new Handler()));    class MyObserver extends ContentObserver{        public MyObserver(Handler handler) {            super(handler);            // TODO Auto-generated constructor stub        }        //内容观察者收到数据库发生改变的通知时,会调用此方法        @Override        public void onChange(boolean selfChange) {        }    }

* 在内容提供者中发通知的代码

    ContentResolver cr = getContext().getContentResolver();    //发出通知,所有注册在这个uri上的内容观察者都可以收到通知    cr.notifyChange(uri, null);
public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //注册内容观察者,观察者就生效了,可以接受内容提供者发出的通知        ContentResolver resolver = getContentResolver();        //arg0:指定接收哪个内容提供者发出的通知        resolver.registerContentObserver(Uri.parse("content://sms"),                 true, //如果为true,以这个uri作为开头的uri上的数据改变了,该内容观察者都会收到通知                new MyObserver(new Handler()));    }    class MyObserver extends ContentObserver{        public MyObserver(Handler handler) {            super(handler);            // TODO Auto-generated constructor stub        }        @Override        public void onChange(boolean selfChange) {            // TODO Auto-generated method stub            super.onChange(selfChange);            System.out.println("短信数据库改变");        }    }}
public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //注册内容观察者接收01发送的通知        getContentResolver().registerContentObserver(Uri.parse("content://com.cy.people"),                 true, new ContentObserver(new Handler()) {                    @Override                    public void onChange(boolean selfChange) {                        // TODO Auto-generated method stub                        super.onChange(selfChange);                        System.out.println("01数据库改变");                    }                });    }}

参考:Android ContentProvider

原创粉丝点击