项目经验谈---IM新消息界面刷新异常处理记录

项目中使用到ContentObserver来观察Provider的变化,当对Uri做数据库操作时对应的Provider会发一条Notify消息调用UI上层的ContentChange方法,在这个ContentChange方法中是重新对本会话的消息表的Uri查询一次,查询完毕后更新界面并将listView滑到最底部,有发现如果删除某会话的最后一条数据再新增一条数据时界面没有刷新的异常。排查后发现每一条短消息对应一个ThreadId,一旦删除了某个会话中的最后一条消息,在新建一条信息会重新创建一个新的ThreadId.而我们项目监听的Uri后面有ThreadId这个作为参数来查所有包含在本会话中的消息记录,因为监听的是老的ThreadId,所以新消息的Notify没有收到。处理办法,当去查询消息数据时先用当前的联络人号码查一遍Thread表,因为一个发送人号码肯定是对应唯一的一个ThreadId,所以查出来的一定是一个新的ThreadId,这样在用新的ThreadId组成Uri再去查就会查到新加的数据,查询完更新UI,问题解决。

项目经验谈---IM新消息界面刷新异常处理记录,布布扣,bubuko.com

时间: 2024-12-23 10:29:11

项目经验谈---IM新消息界面刷新异常处理记录的相关文章

iOS彩票项目--第四天,新特性界面搭建,UICollectionViewController的初次使用

一.新特性界面搭建的思路: 在AppDelegate加载主窗体的时候进行判断程序版本号,直接进入程序或者进入新特性展示界面 取出当前的版本号,与旧的版本号相比较(旧的版本号在进入程序的时候存起来 =>建议偏好设置存储) 版本号不一样,说明当前版本是新版本需要进入新特性介绍,并将版本号存下来 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchO

Android聊天界面刷新消息

今天,我想来分享一下自己初用线程的感受,虽然写法略显粗糙,并没有用线程Thread中核心的Looper,MessageQueue消息队列这些知识,正因为是初学线程,所以就只用最基础的来写了,慢慢学习优化改进. 上一节“Android中Thread的2种实现方法”中介绍过Android中Thread的2种实现方法,今天我用的是后一种,通过实现Runnable接口来实现我刷新聊天消息的线程RefreshThread. private class RefreshThread implements Ru

4、VS2010+ASP.NET MVC4+EF4+JqueryEasyUI+Oracle项目开发之——后台管理界面

这一章节比较简单,我就直接贴代码了,后台管理登陆界面如下: 对应的控制器HomeController.cs,代码如下: using YKT.Model; using YKT.Common; using YKT.BLL; using YKT.Common.HtmlHelpers; using YKT.Common.Functions; using Microsoft.Practices.Unity; using YKT.IBLL; namespace YKT.Controllers { publi

android 单线程多任务断点排队下载(支持多界面刷新)

最近在做一个单线程多任务的断点排队下载的功能,网上确实有很多这样的demo.但是呢我发现大部分网上的demo都是很些不完整的要么就是有缺陷的,可能是我还没找到.今天我给大家带来的一个功能完整的并且可以多界面刷新,就比如:我当前界面点了下载放后台下载了,退出了当前界面在进来网上很多这样demo都没做继续更新界面.并且还做了排队. 首先我们先制定下计划: 1.我们做的是断点下载,断点下载肯定是需要记录当前下载的进度和文件总大小的.这个当然是放在数据库里面最好,当然肯定会是异步来操作数据库,这里我们就

高仿微信新消息提示音功能

最近公司在做一个项目,有一个切换消息提示音的功能,可以切换本应用收到消息的提示音,而不影响系统提示音.我就按照微信的那个样式进行了编程,最终得到想要的效果. 转载请注明出处,谢谢:http://blog.csdn.net/harryweasley/article/details/46408037 怕有些人不知道怎么进入微信的新消息提示音功能,我这里说下操作步骤: 打开微信----我---设置---新消息提醒---新消息提示音. 经过以上的步骤就进入了这样的界面 这个是微信的效果图. 下面是我自己

android实现仿QQ界面刷新

android实现仿QQ界面刷新 转载请注明出处:http://blog.csdn.net/wangpengfei_p/article/details/51420422 昨天想要实现一个下拉刷新的效果,本来想应该比较简单,因为之前在慕课网看见过类似的实现,记得是在listView里面添加footView或是添加headView,监听手指的点击滑动事件来控制view的显示或是隐藏,但是自己按照上面的代码来实现之后发现.这样做有一点不好的地方: 它判断是否刷新的依据是判断listView是不是滑动到

iOS开发项目篇—32添加上拉刷新数据

iOS开发项目篇—32添加上拉刷新数据 一.简单说明 图片示意 思路:可以自定义一个view(示意xib),在view中添加一个label和菊花,指示状态.把这个view设置为tableView的底部视图. 二.实现过程 1.新建一个类和xib,关联 (1)创建一个类,让其继承自UIView (2)创建一个xib文件,用来定义上拉提示框 (3)定义的xib文件,把类和xib文件进行关联 2.实现代码: YYlaodStatusesFooter.h文件 1 // 2 // YYlaodStatus

Uni-app基础实战上加载新下拉刷新 WordPress rest api实例(一)

Uni-app实战上加载新下拉刷新 WordPress rest api实例 通过WordPress自带的 rest api接口我们去实现uni-app的上拉刷新和下拉加载,首先我们需要一点基础.如果有基础可以直接看正文,如果大家和枫瑞一样也是新手那大家可以阅读以下文章 uni-app 实战接入热门小说API接口 适用于新手 Uni-App 微信项目练习首页列表含界面传参 新手教程(一) Uni-App 微信项目练习列表传参聊天窗口 新手教程(二) 如果有基础的我们就看这这边哈哈! [tip]1

仿微信新消息提示音

怕有些人不知道怎么进入微信的新消息提示音功能,我这里说下操作步骤: 打开微信----我---设置---新消息提醒---新消息提示音. 经过以上的步骤就进入了这样的界面 具体实现的步骤. 难点之一:获取到手机系统的提示音,并将它们显示在一个listview里面. 参考如下代码: // 获得RingtoneManager对象   RingtoneManager manager = new RingtoneManager(this);   // 设置RingtoneManager对象的类型为TYPE_