ContentObserver DatasetObserver的作用

1. ContentObserver

    ContentObserver主要是通過Uri來監測特定的Databases的表,如果該Databases表有變動則會通知更新cursor中的數據。

    如果使用ContentProvider操作數據庫,在ContentProvider的query()方法中會通過Cursor.setNotificationUri()註冊uri描述的表,在insert,delete,query操作之後都會調用getContext().getContentResolver().notifyChange()。是當uri描述的db表中有insert,delete,query操作之後,notifyChange()會通知該cursor註冊的ContentObserver,並調用ContentObserver的onChange方法。CursorAdapter的onChange一般會調onContentChanged,在onContentChanged中調用Cursor.requery()來更新cursor中的數據。

用途:database table中有變動後通知用戶刷新cursor中的數據。

 

2. DatasetObserver

    DatasetObserver主要是當註冊它的cursor中發生變動時會調用其中的方法,讓用戶做一些界面刷新等操作。

    首先cursor通過registerDataSetObserver()註冊DatasetObserver   當cursor數據有變動時,例如調用了cursor的requery(),會調用cursor的onChanged通知用戶cursor中的內容有變動,用戶可以在onChanged裏做一些刷新界面的操作。一般會在onChanged裏調用notifyDataSetChanged通知framework,framework收到通知會調用CursorAdapter的getView來做界面刷新等工作。

用途:cursor中的數據有變動時通知用戶刷新界面。

發佈了13 篇原創文章 · 獲贊 6 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章