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를 호출합니다. () 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); } } }
테스트 애플리케이션:
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 중국어 웹사이트를 주목하세요!