动态使用ContentObserver的问题
2014-08-25 20:21
239 查看
笔者在使用ContentObserver来监控一些设置的变化时,对于跨进程来通讯来说是非常方便的。但是笔者也遇到一些问题,比如我能不能动态的监控呢?
好比这种情况,我设置了某个设置的监听,也收到了这个设置的变化通知,但是处于有些原因,我又要把这个设置项的值修改成其他特殊需求的值,如果不改变监听的话,我自己设置进入新值以后,我的监听函数不是一样被执行了嘛!这是我不希望发生的,笔者也不想发生这种情况,就尝试了以下方法:
收到这个值以后,动态unregisterContentObserver这个设置,然后设置这个值,最后再registerContentObserver回来,从简单流程上看这是可以的。但是笔者在实践中发现,这是有问题的,也就是在代码unregisterContentObserver这个设置后,再设置这个设置项时,变更通知还是收到了,也就是没有取消掉注册监听。笔者分析了一下,可能还是unregisterContentObserver的一些特性,数据库的操作,可能需要一些时间延时等待完成。但是,在这个流程中要加入延时的话,有事不可接受的,这个非常郁闷,笔者还不知道怎么解决,只能想其他办法去绕开这种情况,有知道细节的朋友可以指定一下。
另外,ContentResolver在连续写时,可能只执行一次,比如,一个设置项在代码中先设置成A,再设置成B,然后设置成C,按理说监控函数有会来三次变更,但是实际上可能是来1次,笔者也碰到来2次的情况,没测试上来三次的情况。
好比这种情况,我设置了某个设置的监听,也收到了这个设置的变化通知,但是处于有些原因,我又要把这个设置项的值修改成其他特殊需求的值,如果不改变监听的话,我自己设置进入新值以后,我的监听函数不是一样被执行了嘛!这是我不希望发生的,笔者也不想发生这种情况,就尝试了以下方法:
收到这个值以后,动态unregisterContentObserver这个设置,然后设置这个值,最后再registerContentObserver回来,从简单流程上看这是可以的。但是笔者在实践中发现,这是有问题的,也就是在代码unregisterContentObserver这个设置后,再设置这个设置项时,变更通知还是收到了,也就是没有取消掉注册监听。笔者分析了一下,可能还是unregisterContentObserver的一些特性,数据库的操作,可能需要一些时间延时等待完成。但是,在这个流程中要加入延时的话,有事不可接受的,这个非常郁闷,笔者还不知道怎么解决,只能想其他办法去绕开这种情况,有知道细节的朋友可以指定一下。
另外,ContentResolver在连续写时,可能只执行一次,比如,一个设置项在代码中先设置成A,再设置成B,然后设置成C,按理说监控函数有会来三次变更,但是实际上可能是来1次,笔者也碰到来2次的情况,没测试上来三次的情况。
相关文章推荐
- 关于统计的一个sql问题,使用动态sql语句实现。
- flash embed fonts–动态创建文本时嵌入字体_解决_rotation和_alpha不能使用的问题
- 动态创建文本文件并写入数据 避免正由另一进程使用,因此该进程无法访问该文件。的问题
- Android使用ContentObserver监听数据库变化,截取系统通知用户接收到短信
- 使用ContentObserver监听数据库变化
- Asp.net开发心得点滴[动态加载的用户控件使用事件委托,交给页面处理的事件无效问题]
- 动态规划:0-1背包问题(使用迭代方法,避免重复计算)
- 使用动态编程方法,在降低时间复杂度的情况下获得背包问题的最优解
- 使用ContentObserver监听数据库变化
- (转)Android使用ContentObserver监听数据库变化
- ASP.NET中使用动态LoadControl和缓存问题
- 容易被忽略的细节(2):使用泛型类和泛型方法解决【动态类型】问题
- 关于统计的一个sql问题,使用动态sql语句实现。
- iSCSI存储连接Win2003,服务器使用动态磁盘的问题!
- HPUX环境,在WebLogic服务器中使用java调用C动态连接库异常问题总结
- 使用动态属性还是资源?似乎是一个问题。
- ASP.NET中使用动态LoadControl和缓存问题
- 解决使用AJax往DropDownList中动态添加数据时发生,回发或回调参数无效 的问题
- Windows 64bit 平台使用 regsvr32 注册驱动动态库问题
- 动态规划:0-1背包问题(使用递归方法)