DatasetObserver与ContentObserver

通过ContentObserver来监测Databases的改变,并且做出相应的处理。
但对Databases的改变,除了可以通过ContentObserver来监测外,还可以通过DatasetObserver来监测。那我们来看看它们之间的区别

1,ContentObserver
Receives call backs for changes to content. Must be implemented by objects which are added to a ContentObservable.
Content改变.接受回调
其实ContentObserver主要是通过Uri来监测特定的Databases的表:
比如:
Java代码   收藏代码
  1. public class TestContentObserver extends Activity {  
  2.     MyContentObserver mco;  
  3.     /** Called when the activity is first created. */  
  4.     @Override  
  5.     public void onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.main);  
  8.         mco=new MyContentObserver(new MyHandler());  
  9.           
  10.           
  11.     }  
  12.     @Override  
  13.     protected void onResume() {  
  14.         // TODO Auto-generated method stub  
  15.         super.onResume();  
  16.     getApplicationContext().getContentResolver().registerContentObserver(Contacts.CONTENT_URI, true, mco);  
  17.     }  
  18.       
  19.     class MyHandler extends Handler{  
  20.         @Override  
  21.         public void handleMessage(Message msg) {  
  22.             // TODO Auto-generated method stub  
  23.             super.handleMessage(msg);  
  24.         }  
  25.     };  
  26.       
  27.     class MyContentObserver extends ContentObserver{  
  28.   
  29.         public MyContentObserver(Handler handler) {  
  30.             super(handler);  
  31.             // TODO Auto-generated constructor stub  
  32.         }  
  33.         @Override  
  34.         public void onChange(boolean selfChange) {  
  35.             // TODO Auto-generated method stub  
  36.             super.onChange(selfChange);  
  37.             System.out.println("onChange "+selfChange);  
  38.         }  
  39.           
  40.         @Override  
  41.         public boolean deliverSelfNotifications() {  
  42.             // TODO Auto-generated method stub  
  43.             return super.deliverSelfNotifications();  
  44.             //return true;  
  45.         }  
  46.     };  
  47. }  
[java] view plain copy
  1. public class TestContentObserver extends Activity {  
  2.     MyContentObserver mco;  
  3.     /** Called when the activity is first created. */  
  4.     @Override  
  5.     public void onCreate(Bundle savedInstanceState) {  
  6.         super.onCreate(savedInstanceState);  
  7.         setContentView(R.layout.main);  
  8.         mco=new MyContentObserver(new MyHandler());  
  9.           
  10.           
  11.     }  
  12.     @Override  
  13.     protected void onResume() {  
  14.         // TODO Auto-generated method stub  
  15.         super.onResume();  
  16.     getApplicationContext().getContentResolver().registerContentObserver(Contacts.CONTENT_URI, true, mco);  
  17.     }  
  18.       
  19.     class MyHandler extends Handler{  
  20.         @Override  
  21.         public void handleMessage(Message msg) {  
  22.             // TODO Auto-generated method stub  
  23.             super.handleMessage(msg);  
  24.         }  
  25.     };  
  26.       
  27.     class MyContentObserver extends ContentObserver{  
  28.   
  29.         public MyContentObserver(Handler handler) {  
  30.             super(handler);  
  31.             // TODO Auto-generated constructor stub  
  32.         }  
  33.         @Override  
  34.         public void onChange(boolean selfChange) {  
  35.             // TODO Auto-generated method stub  
  36.             super.onChange(selfChange);  
  37.             System.out.println("onChange "+selfChange);  
  38.         }  
  39.           
  40.         @Override  
  41.         public boolean deliverSelfNotifications() {  
  42.             // TODO Auto-generated method stub  
  43.             return super.deliverSelfNotifications();  
  44.             //return true;  
  45.         }  
  46.     };  
  47. }  

registerContentObserver(Contacts.CONTENT_URI, true, mco);通过对Contacts.CONTENT_URI的监测,当Contacts发生变化就会call back回调mco里面的onChange方法来处理变化。

2,DatasetObserver
Receives call backs when a data set has been changed, or made invalid. The typically data sets that are observed are Cursors or Adapters. DataSetObserver must be implemented by objects which are added to a DataSetObservable.
DatasetObserver当数据集改变或者无效时,就会回调相应的函数做出处理,而典型的数据集就是cursor或者adapters.
这就是说通过cursor或者adapters的改变来做出相应的处理。
比如:QuickSearchBox中的SuggestionsAdapter
Java代码   收藏代码
  1. mSuggestionsAdapter.registerDataSetObserver(new SuggestionsObserver());

  2. private class SuggestionsObserver extends DataSetObserver {  
  3.        @Override  
  4.        public void onChanged() {  
  5.            updateInputMethodSuggestions();  
  6.        }  
  7.    } 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值