数据库监听。数据库一次notify,Activity多次接收
今天项目中发现一个bug:
(1)当uri数据库中有更新,会从数据库层DataService中通知应用层,调用notifyChange:
mContext.getContentResolver().notifyChange(uri, null);
(2)Activity中有类DataListener
1 class DataListener extends ContentObserver 2 { 3 4 public DataListener(Handler handler) 5 { 6 super(handler); 7 // TODO Auto-generated constructor stub 8 } 9 10 @Override 11 public void onChange(boolean selfChange) 12 { 13 try 14 { 15 List<ContactDataItem> contactList = DataService.getInstance().getDao(ContactDataItem.class).queryForAll(); 16 Log.d(LogConfig.CONTRACTS_TAG, "data change"); 17 mNeedRefreshContactList = true; 18 mContactsAdapter.setContactList(contactList); 19 notifyDataSetChanged(); 20 } 21 catch (SQLException e) 22 { 23 // TODO Auto-generated catch block 24 e.printStackTrace(); 25 } 26 } 27 }
Activity中,注册数据库监听
mDataListener = new DataListener(new Handler(this.getMainLooper()));
mContext.getContentResolver().registerContentObserver(uri, false, mDataListener);
(3)后来发现,log中DataService通知了一次
==DataService== notifyChange Uri content://test/data/contact
但是Acitivity中,以下这句Log出现次数是递增的:
Log.d(LogConfig.CONTRACTS_TAG, "data change");
第一次进页面出现一次,第二次进页面出现两次,页面也相应刷新两次。
(4)后来发现是个低级错误,出界面时没有取消监听:
mContext.getContentResolver().unregisterContentObserver(mDataListener);
注册/取消注册ContentObserver方法,抽象类ContentResolver类中的方法原型如下:
public final void registerContentObserver(Uri uri, boolean notifyForDescendents, ContentObserver observer)
功能:为指定的Uri注册一个ContentObserver派生类实例,当给定的Uri发生改变时,回调该实例对象去处理。
参数:uri 需要观察的Uri(需要在UriMatcher里注册,否则该Uri也没有意义了)
observer ContentObserver的派生类实例
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的数据库变化。
转载于:https://www.cnblogs.com/maxiaodoubao/p/4466167.html
数据库监听。数据库一次notify,Activity多次接收相关推荐
- oralce 数据库监听日志状态及目录:查看监听(使用grid用户登陆):
数据库监听日志状态及目录:查看监听(使用grid用户登陆): su - grid 密码:grid [grid@db1 ~]$ lsnrctl LSNRCTL> status LSNRCTL> ...
- oracle数据库监听频道异常,数据库监听不定期出现异常故障处理
故障现象: 数据库监听不定期出现异常,从应用tnsping数据库,时间花费很长甚至连不上 故障分析处理过程: 从应用主机tnsping如下: racdb1_scenemon$tnsping racdb ...
- oracle数据库监听问题,分享一个有意思的Oracle19c数据库监听异常
概述 今天主要分享一个最近排查的监听问题,还是有点意思的,一起来看看吧~ 环境:oracle19c 单实例 用plsql连接提示,这里排除防火墙.账号密码问题,连接字符串按监听文件格式写 1. 测试监 ...
- oracle 监听报错,Oracle EBS系统数据库监听报错TNS-12547、TNS-12560和TNS-00517解决方法...
记得有一次Oracle EBS系统中止运行3小时,实在比较一次惨痛的教训,让我至今记忆犹新. 问题症状:用户反映提交的请求全部是红色错误 开始意为是并发管理"标准管理器"的问题,在 ...
- oracle数据库监听说法正确,Oracle数据库错题合集
1.在0racle中,数据定义语言用于 A:定义和修改数据结构 2.创建数据库表的多个列之间用逗号隔开,最后一个不用 3.在0rac1e中,下列有关概念的说法 a.网络服务名,是客户端程序访问需要配置 ...
- 3、配置/管理Oracle数据库---监听程序配置
3.配置/管理Oracle数据库-监听程序配置 在成功创建Oracle数据库之后,用户可以对其进行配置和管理.需要用到网络配置助手工具 网络配置助手:主要用于Oracle数据库的监听程序.命名方法 ...
- 【做一下1】python 监听数据库变化
前言 用的yolov5,作者自己写的loadStream函数就是依据 streams.txt里面的rtsp流地址列表来新建线程,然后实现多路监控的. 大体就是这个图里面说的,我已经是为了个整体业务,去 ...
- oracle 数据库起监听,oracle启动数据库监听
linux/Aix启动.关闭Oracle及监听 Aix环境下管理Oracle 1.Aix下查看.启动数据库监听器 以oracle用户执行以下命令: ① lsnrctl status //-查看监听器状 ...
- java利用canal监听数据库
springcloud如何使用canal监听mysql数据库操作 canal是阿里巴巴旗下的一款开源项目,纯Java开发.基于数据库增量日志解析,提供增量数据订阅&消费,目前主要支持了MySQ ...
最新文章
- HttpWatch是强大的网页数据分析工具
- Android fingerprint指纹/face人脸代码导读
- UVA 146 ID Codes
- win8.1 php mysql,win8.1(64位) apache2.4.3+php5.6.3+mysql5.6安装
- mysql索引三个字段查询两个字段_mysql中关于关联索引的问题——对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引?...
- AAAI 2020 | GlobalTrack:简单又强大!视频长期目标跟踪新基线
- 做到这 3 点,斩获 BAT Offer 不是梦
- AI界的革命!终于可以自动标注了!
- leetcode319 Bulb Switcher
- 计算机网络:逆向工程(精细版)
- paddlex,2.1.0识别预测代码(包含视频的)
- Linux内核 触摸板,【教程】给Linux(elementary os)配置更多的触摸板手势
- Spring系列教程六: Spring jdbcTemplate在Dao中的使用
- 前端中文汉字转换为拼音、拼音首字母的插件Chinese-to-Pinyin
- 程序员如何选择适合自己的企业?
- Android之内存泄漏调试学习与总结
- List集合中的常见面试题以及简单思路
- Tensorflow2实现人脸关键点检测算法PFLD——一个精度高,速度快,模型小的人脸关键点检测模型
- Redis 个人狂神说视频学习笔记
- 体系的建模与仿真软件系统价格
热门文章
- 一款功能强大的IP查询工具
- 和 VMware、深信服、天翼云、招商云专家一起聊聊云原生边缘计算
- 免费下载来自阿里巴巴 双11 的《云原生大规模应用落地指南》
- 从零开始入门 K8s | Kubernetes 网络模型进阶
- 云原生应用万节点分钟级分发协同实践
- 全球首个开放应用模型 OAM 开源 | 云原生生态周报 Vol. 23
- Jmeter之函数助手操作
- python发送文件到钉钉群_iOS python 自动化打包,并在钉钉群里发通知
- mysql创建generator字段_springmvc+mybatsi-generator生成不了字段注释的解决方案
- java swt窗口,SWT Java:如何防止窗口调整大小?