Heim  >  Artikel  >  Java  >  Einführung in die Überwachung von Datenänderungen in ContentProvider basierend auf Android

Einführung in die Überwachung von Datenänderungen in ContentProvider basierend auf Android

高洛峰
高洛峰Original
2017-02-07 15:53:521281Durchsuche

Wenn Besucher von ContentProvider die Änderungen in den Daten in ContentProvider kennen müssen, können sie getContentResolver().notifyChange(uri,null) aufrufen, wenn sich die Daten in ContentProvider ändern, um die in diesem URI registrierten Besucher zu benachrichtigen.

public class PersonContentProvider extends ContentProvider[
 public Uri insert(Uri uri,ContentValues values){
  db.insert("person","personid",values);
  getContext().getContentResolver().notifyChange(uri,null);
 }//通知注册在此URI上的访问者,此外注册在insert方法上}

Wenn Besucher von ContentProvider über Datenänderungen benachrichtigt werden müssen, müssen sie ContentObserver verwenden, um die Daten zu überwachen (die Daten werden durch URI beschrieben, wenn die Datenänderungsbenachrichtigung überwacht wird). Die onChange( )-Methode von ContentObserver.

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

Testanwendung:

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

Weitere verwandte Artikel zur Überwachung von Datenänderungen in ContentProvider basierend auf Android finden Sie auf der chinesischen PHP-Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn