如果ContentProvider的訪問者需要知道ContentProvider中的數據的變化情況,可以在ContentProvider發生數據變化時調用getContentResolver().notifyChange(uri,null)來通知注冊在此URI上的訪問者。
@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);
} }
}
新聞熱點
疑難解答
圖片精選