安卓聊天软件

安卓聊天软件

  • 设计模式
  • 1.数据库设计:
  • 2.功能介绍:
    • 2.1登录
    • 2.2注册
      • 2.2.1如何自动生成不重复账号
      • 2.2.2如何判断客户端是进行登录还是注册
      • 2.2.3如何确保数据库的插入语句是否执行完毕
    • 2.3添加好友
      • 2.3.1 如何将好友结果发送到客户端
    • 2.4收发消息
      • 2.4.1如何处理多人向同一个好友发信息
      • 2.4.1实时转发与离线转发

设计模式

采用单例模型,此时线程是不安全的,(访问量较小时可忽略)因为当instance为null时,如果A和B同时访问,就会产生两个实例。可以给其加上锁,使其线程安全。

1.数据库设计:

安卓聊天软件

输入账号和密码之后即登录,新用户则点击右下方按钮进行注册。

2.2注册

安卓聊天软件

初次进入该界面会申请照片的权限,可以通过现在拍摄和图库中选择照片两种方式设置头像。用户的账号是自动生成的。

2.2.1如何自动生成不重复账号

生成一个num位的随机字符串。当同时申请的人数较少时,此时生成的字符串基本都是不一样的。

2.2.2如何判断客户端是进行登录还是注册

使用一个枚举类,列出所有的可能,在Listen监听线程中用case判断消息类型。

2.2.3如何确保数据库的插入语句是否执行完毕

使用事务,确保语句能正确执行,否则回滚。

2.3添加好友

安卓聊天软件

此时,对方点击该条消息后,会弹出一个对话框。

2.3.1 如何将好友结果发送到客户端

将目标序列化之后发送,在客户端进行反序列化。

2.4收发消息

安卓聊天软件 安卓聊天软件

2.4.1如何处理多人向同一个好友发信息

使用一个队列sendQueue来维护所有人向该用户发送的消息,用synchronized修饰,保证每次只能有一个用户将消息加入到消息队列之中。
服务器会实时检测sendQueue的大小,当sendQueue的大小不为0的时候,向客户端转发消息。

2.4.1实时转发与离线转发

当好友在线的时候,转发的消息不存入数据库,而是直接转发给对方,增加实时性,客户端通过handler来更新UI。当好友不在线的时候。存入数据库,当好友上线的时候,会自动读取离线消息,读取之后用SQLite存储在本机。读取之后,服务器端的数据库会删除他的所有离线信息。

文章知识点与官方知识档案匹配,可进一步学习相关知识

来源:像个人丶

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月16日
下一篇 2021年3月16日

相关推荐