TT流程随笔

细节:

 

  如果本地可以自动登录, 先实现本地登录,发送事件通知,再请求登录服务器

 

  如果本地不可以登录(第一次或退出后),直接请求登录服务器

 

  登录服务器返回消息服务器ip port / 文件服务器

 

  链接消息服务器(socketThread 通过netty)

 

  链接成功或失败都发送事件通知 (可能是在loginactivity  处理,也可能在chatfragment处理,你懂滴)

 

 链接失败弹出界面提示

 

 链接成功 请求登录消息服务器(发送用户名 密码 etc)并且同时开启 回掉监听队列计时器(这个稍后再细看吧~)

 

 登录消息服务器成功或失败都通过回掉 (回掉函数存储在packetlistner 中)处理

 

 登录消息服务器失败 发送总线事件,也可能在两个位置处理(loginactvity/chatfragment ,你懂得~) 

 

消息服务器登录成功,并解析返回的登录信息,发送登录成功的事件总线,事件的订阅者分为service 和 activity ,activity 中的事件负责ui的更新处理,service中事件处理,消息的进一步获取 ,与服务器打交道

 

判断登录的类型(普通登录和本地登录成功后的消息服务器登录)

 

service 收到登录成功(此指在线登录成功,本地登录成功也是一个道理,发送事件更新界面ui和在service中事件触发进一步的消息获取(获取本地库))的事件通知(按登录类型有所不同 ,大体一致)后,做如下工作:

 

1.保存本次的登录标示到xml

2.初始化数据库(创建或获取当前用户所在数据库统一操作接口单例)

3.请求联系列表

4.请求群组列表

5.请求最近会话列表

6.请求未读消息列表(只是在线登录状态)

7.重连管理类的相关设置(广播的注册等)

 

接下来就是对服务端发送消息过来的分析

 

1.服务端发送消息过来有回调的采用回掉处理

 

2.服务端没有回调的,按照commandid处理

 

消息的处理都是在相关的管理器类实例内完成

 

该存库的存库,该更新内存的,更新内存,然后发送事件总线更新ui  或者通知service中的相关订阅者,完成业务逻辑的数据相关处理

posted @ 2015-03-18 01:14  齐永强2012  阅读(468)  评论(0编辑  收藏  举报