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

pgstolheh

pgstolheh

2016-02-19 10:09

给自己一点时间接受自己,爱自己,趁着下午茶的时间来学习图老师推荐的基于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);

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

  Uri uri = Uri.parse("content://cn.wordtech.providers.personprovider/person");
  this.getContentResolver().registerContentObserver(uri, true, new PersonContentdObserver(new Handler()));
  // 第三个对象为监听对象,当数据发生改变的时候通知此对象做相应的改变
 }

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

 @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);
   }
  });

展开更多 50%)
分享

猜你喜欢

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

编程语言 网络编程
基于Android 监听ContentProvider 中数据变化的相关介绍

基于Android CALL && SendMes Test的相关介绍

编程语言 网络编程
基于Android CALL && SendMes Test的相关介绍

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

基于Android AppWidgetProvider的使用介绍

编程语言 网络编程
基于Android AppWidgetProvider的使用介绍

基于Android LayoutInflater的使用介绍

编程语言 网络编程
基于Android LayoutInflater的使用介绍

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

基于Android SQLite的使用介绍

编程语言 网络编程
基于Android SQLite的使用介绍

Android控件系列之Button以及Android监听器使用介绍

编程语言 网络编程
Android控件系列之Button以及Android监听器使用介绍

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

网站生成静态页面攻略4:防采集而不防搜索引擎策略

网站生成静态页面攻略4:防采集而不防搜索引擎策略

Android 完全退出应用程序的解决方法

Android 完全退出应用程序的解决方法
下拉加载更多内容 ↓