您好,欢迎访问一九零五行业门户网

基于Android 监听ContentProvider 中数据变化的相关介绍

如果contentprovider的访问者需要知道contentprovider中的数据的变化情况,可以在contentprovider发生数据变化时调用getcontentresolver().notifychange(uri,null)来通知注册在此uri上的访问者。
public class personcontentprovider extends contentprovider[ public uri insert(uri uri,contentvalues values){ db.insert("person","personid",values); getcontext().getcontentresolver().notifychange(uri,null); }//通知注册在此uri上的访问者,此外注册在insert方法上}
如果contentprovider的访问者需要得到数据变化通知,必须使用contentobserver对数据(数据使用uri描述)进行监听,当监听到数据变化通知时,系统就会调用contentobserver的onchange()方法。
public class mainactivity extends activity { @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); } } }
测试应用:
button btn = (button) findviewbyid(r.id.btn); btn.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { uri uri = uri.parse("content://cn.wordtech.providers.personprovider/person");// 根据标识名得到内容提供者 contentresolver cr = mainactivity.this.getcontentresolver(); contentvalues values = new contentvalues(); values.put("name", "livingstone"); values.put("phone", "1101"); values.put("amount", "1111111111"); cr.insert(uri, values); } });
更多基于android 监听contentprovider 中数据变化的相关介绍。
其它类似信息

推荐信息