如果contentprovider的访问者需要知道contentprovider中的数据的变化情况,可以在contentprovider发生数据变化时调用getcontentresolver().notifychange(uri,null)来通知注册在此uri上的访问者。
@override
protected void oncreate(bundle savedinstancestate) {
super.oncreate(savedinstancestate);
setcontentview(r.layout.activity_main);
uri uri = uri.parse("content://cn.wordtech.providers.personprovider/person");
this.getcontentresolver().registercontentobserver(uri, true, new personcontentdobserver(new handler()));
// 第三个对象为监听对象,当数据发生改变的时候通知此对象做相应的改变
}
@override
public boolean oncreateoptionsmenu(menu menu) {
getmenuinflater().inflate(r.menu.main, menu);
return true;
}
private class personcontentdobserver extends contentobserver {
public personcontentdobserver(handler handler) {
super(handler);
}
@override
public void onchange(boolean selfchange) {
uri uri = uri.parse("content://cn.wordtech.providers.personprovider/person");
cursor cursor = getcontentresolver().query(uri, null, null, null,"personid desc limit 1");
while (cursor.movetonext()) {
string name = cursor.getstring(cursor.getcolumnindex("name"));
log.i("name", name);
}
super.onchange(selfchange);
} }
}
如对本文有疑问, 点击进行留言回复!!
荐 面试官:kafka日志段如何读写都不知道,好意思说精通Kafka吗?
荐 如何写出一份“有理有据使人信服”的Android项目设计文档
荐 灵魂一问,Android中有代替HashMap的方法吗?
intent.setFlag的参数 FLAG_ACTIVITY_CLEAR_TASK 说明
网友评论