欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Android 監(jiān)聽(tīng)ContentProvider 中數(shù)據(jù)變化的相關(guān)介紹

 更新時(shí)間:2013年04月21日 11:45:18   作者:  
本篇文章小編為大家介紹,基于Android 監(jiān)聽(tīng)ContentProvider 中數(shù)據(jù)變化的相關(guān)介紹。需要的朋友參考下

如果ContentProvider的訪問(wèn)者需要知道ContentProvider中的數(shù)據(jù)的變化情況,可以在ContentProvider發(fā)生數(shù)據(jù)變化時(shí)調(diào)用getContentResolver().notifyChange(uri,null)來(lái)通知注冊(cè)在此URI上的訪問(wèn)者。

復(fù)制代碼 代碼如下:

public class PersonContentProvider extends ContentProvider[
 public Uri insert(Uri uri,ContentValues values){
  db.insert("person","personid",values);
  getContext().getContentResolver().notifyChange(uri,null);
 }//通知注冊(cè)在此URI上的訪問(wèn)者,此外注冊(cè)在insert方法上}

如果ContentProvider的訪問(wèn)者需要得到數(shù)據(jù)變化通知,必須使用ContentObserver對(duì)數(shù)據(jù)(數(shù)據(jù)使用URI描述)進(jìn)行監(jiān)聽(tīng),當(dāng)監(jiān)聽(tīng)到數(shù)據(jù)變化通知時(shí),系統(tǒng)就會(huì)調(diào)用ContentObserver的onChange()方法。
復(fù)制代碼 代碼如下:

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()));
  // 第三個(gè)對(duì)象為監(jiān)聽(tīng)對(duì)象,當(dāng)數(shù)據(jù)發(fā)生改變的時(shí)候通知此對(duì)象做相應(yīng)的改變
 }

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


測(cè)試應(yīng)用:
復(fù)制代碼 代碼如下:

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");// 根據(jù)標(biāo)識(shí)名得到內(nèi)容提供者
    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);
   }
  });

相關(guān)文章

最新評(píng)論