android,ContentProvider+ContentObserver+ContentResolver,用法。

android,ContentProvider+ContentObserver+ContentResolver,用法。

这个是传智播客老师讲android开发时的一个图。

一、

PersonProvider继承ContentProvider,实现ContentProvider中的数据操作类。

ContentObserver——内容观察者,目的是观察(捕捉)特定Uri引起的数据库的变化,继而做一些相应的处理,它类似于数据库技术中的 触发器(Trigger),当ContentObserver所观察的Uri发生变化时,便会触发它。触发器分为表触发器、行触发器,相应地 ContentObserver也分为“表“ContentObserver、“行”ContentObserver,当然这是与它所监听的Uri MIME Type有关的。

在需要监听的操作中添加添加数据变化通知。

android,ContentProvider+ContentObserver+ContentResolver,用法。

this.getContext().getContentResolver().notifyChange(uri, null);

第二个参数,数据变化的监听者,可以不设置,也即是设为null,如果给定了这个监听者,不管外面有多少个应用要设置监听,进行监听数据变化,这个getContentResolver()监听对象,必然会得到数据的变化通知。

这句话是从别处复制的,但是不懂啊不懂啊~~~

二、
设置监听
android,ContentProvider+ContentObserver+ContentResolver,用法。

//设置监听
this.getContentResolver().registerContentObserver(uri, true, new PersonContentObserver(new Handler()));

这个方法的参数请参考下面链接中大神给出的解释:

当有应用调用PersonProvider的insert方法是,就会执行onChange()方法,并打印出字段name的值。