Android 即时连天工具的开发

客户端,开三个线程,thread1监听接收消息,用udp,thread2定时向服务器发送在线消息,用tcp,thread3每隔一段时间检查发送的消息的时间是否超时(客户端之间每次收到消息都要发送一个确认包,每次发送消息,都要把此消息加入全局json,加上time,消息id等标签。直到收到确认消息后删除全局变量中的此消息),超时后就把此消息发送服务器,当好友再次上线后,就发送出去。

客户端登陆时用tcp连接服务器,服务器返回在线人员的列表,及发给此用户的离线消息。

需要注意:

一,android,主线程,即ui线程终不能执行耗时操作,连接网络的操作要在子线程中执行,子线程不能操作ui,要通过handler消息,发送与主线程操作ui。

二,客户端用的所有的udp---socket都是一个,即保存到全局变量中的socket,同一个端口不能同时绑定两次。

三,刷新消息,刷新在线下线,用的是广播机制,在 广播接收器中new个activity类,注意此activity类一定要在android的堆栈中,即曾经打开过此ui,并且没有销毁他。否则在广播接收器中会提示ui组件resure源找不到。

四,全局变量用application,要在AndroidManifes.xml中定义,调用时用getapplication(),每次退出程序要把全局变量清除依次,否则下次登录可能还会有;

五,记得在AndroidManifest.xml中加入一些权限,涉及到连接网络的权限,读写sd卡的权限,等等。

六,注意android的本地ip为10.0.2.2,java的本地ip为127.0.0.1

七,聊天界面是两个List列表相互交叉,显示消息,气泡是7.png格式的图片。

八,聊天消息存到文件中,保存为json格式

服务器端,开三个线程,thread1用于监听登陆,和定时向服务器发送的在线信息,监听ip,port的变化,并刷新在线用户列表的time。及时向在线好用发送用户上线下线的消息。Thread2,用于定时检查用户时间是否超时。Thread3,udp监听,客户端发送的离线消息,并添加进数据库。

服务端有一个全局变量,为用户的列表,用json存储,{id{ip,port,time}}

此外,添加删除朋友,注册,等不需要同步到其他朋友的操作,一律用httpclient请求服务端。

Android 即时通讯开发相关推荐

  1. Android 即时通讯开发小结(二)

    <Android 即时通讯开发小结>基于IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对 IM 开发做一个全面的总结. 相关推荐阅读:. Android即时通讯 ...

  2. Android 即时通讯开发小结(一)

    本文将基于 IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对 IM 开发做一个全面的总结. 客户端架构 作为一个 IM 软件,最重要的一个特性就是保证消息的达到率和实时性. ...

  3. iOS和Android即时通讯开发时后台实时消息推送的原理和区别

    iOS和Android上的实时消息推送差异很大,往小了说是技术实现的差异,往大了说是系统实现理念的不同.实时消息推送在移动端互联网时代很平常,也很重要,它的存在让智能终端真正成为全时信息传播的工具.本 ...

  4. Android即时通讯开发总结

    移动端IM实现方案 第三方平台 比如环信,融云,leancloud,容联云.网易云信等等.直接使用sdk就可以实现了,最简单最直接,而且稳定性已经不错了,连UI界面都带有了,可以自行修改,缺点是要收费 ...

  5. android即时通讯开发!一个三非渣本的Android校招秋招之路,附答案

    开头 最近很多网友反馈:自己从各处弄来的资料,过于杂乱.零散.碎片化,看得时候觉得挺有用的,但过个半天,啥都记不起来了.其实,这就是缺少系统化学习的后果. 为了提高大家的学习效率,帮大家能快速掌握An ...

  6. 盘点im即时通讯开发中Android后台保活方案

    对于IM应用和消息推送服务的开发者来说,在Android机型上的后台保活是个相当头疼的问题. 老板一句:"为什么微信.QQ能收到消息,而你写的APP却不行?",直接让人崩溃,话说老 ...

  7. im即时通讯开发之后台应用保活、消息推送的噩梦

    Android P的最后一个开发者预览版(即DP5)已如期发布于2018年7月26日,根据上面这张发布路线图,相信Android P的正式版将很快到来.对于Andriod开发者来说,不管Andriod ...

  8. im即时通讯开发:进程被杀底层原理、APP应对被杀技巧

    本文的技术原理讲解透彻.系统源码分享到位.样例代码也很有参考意义,希望能对有同样兴趣爱好的Android开发者.IM开发者.推送系统开发者等,带来对于Android进程保活技术的深入理解. 一直以来, ...

  9. 即时通讯开发如何构建一套移动端消息推送系统

    消息推送作为移动端 APP 运营中的一项关键技术,已经被越来越广泛的运用. 本文追溯了推送技术的发展历史,剖析了其核心原理,并对推送服务的关键技术进行深入剖析,围绕消息推送时产生的服务不稳定性,消息丢 ...

最新文章

  1. apache 源代码安装
  2. 趣头条将获得阿里1.71亿美元的可转债,为期三年...
  3. linux下的遥控器软件下载,Linux操作系统下遥控器的配置及使用方法
  4. Django之model模型
  5. ci mysql 缓存_CodeIgniter框架中启用和清除缓存的教程
  6. 史上最简单的SpringCloud教程 | 第四篇:断路器(Hystrix)--里面有BUG,所以我转载改一下
  7. 帆软报表重要Activator之DesignerInitActivator之四WestRegionContainerPane 设计器的左边部分文件列表以及数据集的部分
  8. 微型计算机的实验报告,微机实验报告.doc
  9. Android实时打印kernel和App log(两种方法)
  10. Java笔记 —— 继承
  11. 互联网项目架构经验分享
  12. python中的zen原则到底是什么
  13. python 大智慧自定义数据_大智慧扩展数据、自定义数据
  14. 登录功能使用 JWT 技术
  15. 江苏省等保测评机构项目测评收费价格标准参考
  16. 第一次学游泳技巧_初学者第一次下水需要注意哪些情况,新手学习游泳需要掌握什么技巧,适合的游泳装备有哪些...
  17. Linux(CentOS)搭建redmine项目管理系统
  18. 智能名片如何在会场营销落地
  19. LeetCode-86
  20. 机器人动力学 - 机器人学中的惯性矩阵坐标转换及在SolidWorks中的测量

热门文章

  1. 点餐小程序源码_微信小程序餐饮点餐商城前端模版
  2. java学习小知识集锦1
  3. 四川大学计算机学院琚生根教授,基于卷积神经网络和自注意力机制的文本分类模型...
  4. mysql新浪微盘_Android62期视频教程全集下载
  5. Quadtrees UVA - 297
  6. java如何同时画多个图形_如何绘制两个不同系列的箱线图?
  7. keycloak中文使用文档_基于DOCKER安装配置keycloak
  8. Mysql改写子查询SQL优化案例
  9. php-fpm通道,Go语言通道(chan)——goroutine之间通信的管道
  10. 动力电池溯源追溯系统_来溯有源的区块链溯源系统、追溯系统为什么做的好?值得推荐!...