我们在ContentProvider的insert,update,delete等改变之后调用getContext().getContentResolver().notifyChange(uri, null);这样就通知那些监测databases变化的observer了,而你的observer可以在一个service里面注册。
以Downloadmanger为例子:
定义ContentObserver,并且在onChange里做你想做的事情。
在DownloadService的onCreate中注册:
可以参考以下文章:
以Downloadmanger为例子:
定义ContentObserver,并且在onChange里做你想做的事情。
- /**
- *Receivesnotificationswhenthedatainthecontentproviderchanges
- */
- privateclassDownloadManagerContentObserverextendsContentObserver{
- publicDownloadManagerContentObserver(){
- super(newHandler());
- }
- /**
- *Receivesnotificationwhenthedataintheobservedcontent
- *providerchanges.
- */
- publicvoidonChange(finalbooleanselfChange){
- if(Constants.LOGVV){
- Log.v(Constants.TAG,"ServiceContentObserverreceivednotification");
- }
- updateFromProvider();
- }
- }
在DownloadService的onCreate中注册:
- publicvoidonCreate(){
- super.onCreate();
- if(Constants.LOGVV){
- Log.v(Constants.TAG,"ServiceonCreate");
- }
- mDownloads=Lists.newArrayList();
- mObserver=newDownloadManagerContentObserver();
- getContentResolver().registerContentObserver(Downloads.CONTENT_URI,
- true,mObserver);
- .....}
- /**
- *Cleansupwhentheserviceisdestroyed
- */
- publicvoidonDestroy(){
- getContentResolver().unregisterContentObserver(mObserver);
- if(Constants.LOGVV){
- Log.v(Constants.TAG,"ServiceonDestroy");
- }
- super.onDestroy();
- }
可以参考以下文章:
http://hi.baidu.com/lck0502/blog/item/a818258f304b61e0f01f3691.html
转:http://aijiawang-126-com.iteye.com/blog/812004