基于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的使用详解
- Android中自定义ContentProvider实例
- 浅谈Android Content Provider的使用
- 实例讲解Android中ContentProvider组件的使用方法
- 基于Android ContentProvider的总结详解
- Android中自定义ContentProvider实例
- Android应用中使用ContentProvider扫描本地图片并显示
- 深入Understanding Android ContentProvider详解
- Android内容提供者ContentProvider用法实例分析
- Android组件content provider使用解析
- Android之使用Contentprovider对外共享数据和实现数据监听变化
- [Android Pro] 监听内容提供者ContentProvider的数据变化
- Android开发14——监听内容提供者ContentProvider的数据变化
- Android 使用ContentProvider对外共享数据与监听ContentProvider数据的变化
- Android 监听ContentProvider中数据的变化
- Android开发14——监听内容提供者ContentProvider的数据变化
- Android开发14——监听内容提供者ContentProvider的数据变化
- Android开发14――监听内容提供者ContentProvider的数据变化
- 使用android中ContentProvider组件对外共享以及监听ContentProvider中数据的变化
- Android开发入门之监听ContentProvider中数据的变化
- Android 监听ContentProvider中数据的变化
- Android 监听ContentProvider中数据的变化
- Android入门:监听ContentProvider数据改变
- 监听内容提供者ContentProvider的数据变化
- Android学习笔记---监听ContentProvider(内容共享者)中数据的变化
- 监听ContentProvider中数据的变化
- Android入门:监听ContentProvider数据改变
- 监听Android中ContentProvider内容的变化
- ContentObserver监听ContentProvider的暴露数据的变化
- 第五课:android数据相关---ContentProvider