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 によって記述されます)。データ変更通知が監視されると、システムは 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 でのデータ変更の監視に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。