Android中内容调查者的应用---- ContentObserver类详解

址:http://blog.csdn.net/qinjuning


  媒介: 工作中,须要开启一个线程多量的查询某个数据库值发送了变更,导致的开销很大,后来在垂老的指导下,哄骗了


     ContentObserver完美的解决了该题目,感觉很高兴,做完之后本身也对ContentObserver做下总结。


 


          ContentObserver——内容调查者,目标是调查(捕获)特定Uri引起的数据库的变更,继而做一些响应的处理惩罚,它类似于


   数据库技巧中的触发器(Trigger),当ContentObserver所调查的Uri产生变更时,便会触发它。触发器分为表触发器、行触发器,


  响应地ContentObserver也分为“表“ContentObserver、“行”ContentObserver,当然这是与它所监听的Uri MIME Type有关的。


 


           熟悉Content Provider(内容供给者)的应当知道,我们可以经由过程UriMatcher类注册不合类型的Uri,我们可以经由过程这些不合的


    Uri来查询不合的成果。按照Uri返回的成果,Uri Type可以分为:返回多条数据的Uri、返回单条数据的Uri。


 


 


  注册/作废注册ContentObserver办法,抽象类ContentResolver类中的办法原型如下:


 


    public final void  
registerContentObserver(Uri uri, boolean notifyForDescendents, ContentObserver observer)


             功能:为指定的Uri注册一个ContentObserver派生类实例,当给定的Uri产生改变时,回调该实例对象去向理惩罚。


             参数:uri          须要调查的Uri(须要在UriMatcher里注册,不然该Uri也没有意义了)


                        
notifyForDescendents  为false 默示正确匹配,即只匹配该Uri


                                                                     为true 默示可以同时匹配其派生的Uri,举例如下:


                          假设UriMatcher 里注册的Uri共有一下类型:


                                1 、content://com.qin.cb/student (学生)


                                2 、content://com.qin.cb/student/# 


                                3、 
content://com.qin.cb/student/schoolchild(小学生,派生的Uri)


 


                    假设我们当前须要调查的Uri为content://com.qin.cb/student,若是产生数据变更的 Uri 为   


           content://com.qin.cb/student/schoolchild ,当notifyForDescendents为 false,那么该ContentObserver会监听不到,  


           然则当notifyForDescendents 为ture,能捕获该Uri的数据库变更。


 


                     observer       ContentObserver的派生类实例


 


 


    public final void  unregisterContentObserverContentObserver 
observer)


          功能:作废对给定Uri的调查


          参数: observer ContentObserver的派生类实例


 


        


ContentObserver类介绍


 


  机关办法 public void ContentObserverHandler 
handler)  


                       申明:所有   ContentObserver的派生类都须要调用该机关办法


        参数: handler  Handler对象。可所以主线程Handler(这时辰可以更新UI 了),也可所以任何Handler对象。


 常用办法


   void onChange(boolean selfChange)


       功能:当调查到的Uri产生变更时,回调该办法去向理惩罚。所有ContentObserver的派生类都须要重载该办法去向理惩罚逻辑。


       参数:selfChange 回调后,其值一般为false,该参数意义不大(我也不懂,懂得办法最首要)。


 


  别的两个办法,用处不大,我也不懂,大师参照SDK自行懂得,冒昧了。


  boolean  deliverSelfNotifications()


     申明:Returns true if this observer is 
interested in notifications for changes made through the cursor the 
observer is registered with.


  


  final void dispatchChange(boolean selfChange)


 


 


  调查特定Uri的步调如下


 


     1、    创建我们特定的ContentObserver派生类,必须重载父类机关办法,必须重载onChange()办法去向理惩罚回调后的功能实现


     2、    哄骗context.getContentResolover()获得ContentResolove对象,接着调用registerContentObserver()办法去注册内容调查者


     3、    因为ContentObserver的生命周期不合步于Activity和Service等,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值