TeamTalk Android代码分析(业务流程篇)

TeamTalk Android代码分析(业务流程篇)

1.1 总体结构

1.总体结构有点类似MVC的感觉,模块结构从上向下大体是:

UI层:Activity和Fragment构成,期间包括常用的一些开源控件如:imageloader,speedx,gifview等,和下层数据变更通知通过总线事件完成(EventBus)

管理层:Service(即:imservice,下文均采用此称呼)和一些按照业务划分的Manager(loginmanager,contactmanager,sessionmanager,socketmanager 等),该层负责业务的流转和数据接口的提供,

数据和缓存层:才greendao实现,包括一系列业务相关的缓存,缓存的对象在各manager实体中处理。

网络层:具体由netty实现,获取或发送数据通过pb协议实现(protobuf)

2.1 登录过程

1>请求登录服务器(http),分配消息服务器及其他相关配置

2>链接请求消息服务器

3>其中如果网络连接失败,采用本地登录过程,即:在登录状态的情况下,没有网络也可以查看本地历史信息。

4>登录消息服务器成功后,发送总线事件通知imservice

5>imservice初始化各manager,开启本地和网络数据请求,本地缓存及其他配置的数据填充。

3.1 ContactManager的初始化操作

3.1.1 本地数据的业务操作

1>数据库load部门列表,并填充部门map(departmentmap)

2>数据库load用户列表,并填充用户map(usermap)

3>发送总线事件,通知相关界面(聊天/通讯录/my),并设置该manager数据状态就绪

相关页面动作如下:

1>聊天页面动作:只有session,user,group 数据全部就绪,这个页面才会更新,稍后再详细分析

2>通讯录页面动作:

(1)设置用户tab数据,更新ui

(2)设置部门tab数据,更新ui

(3)用户和部门数据就绪,搜索状态可操作

3>通过loginmanager获取登录信息,更新ui(这个位置的触发,可以放置在登录成功后及时事件通知)

3.1.2 网络数据的业务操作

1>按照本地存储的最后时间点作为参数,请求部门列表

2>按照本地存储的最后时间点作为参数,请求用户列表

3>获取部门数据:

1)缓存map

2)存储db

3)发送总线事件(userinfoevent事件,user_info_update),通知页面更新ui

涉及页面有:通讯录页面:用户列表ui/部门列表ui/用户详细信息(userinfofragment),如果页面收到通知,则获取缓存数据,更新ui

4>获取用户数据:

1)缓存usermap

2)存储db

3)发送总线事件更新ui,页面响应同部门数据。

注意事项:通知页面更新的总线事件,考虑采用poststicky 形式。

3.2 GroupManager的初始化操作

时间: 2024-08-08 06:14:47

TeamTalk Android代码分析(业务流程篇)的相关文章

TeamTalk Android代码分析(业务流程篇)---消息发送和接收的整体逻辑说明

第一次纪录东西,也没有特别的顺序,想到哪里就随手画了一下,后续会继续整理- 6.2消息页面动作流程 6.2.1 消息页面初始化的总体思路 1.页面数据的填充更新直接由页面主线程从本地数据库请求 2.数据库数据的填充由后台线程异步方式从网络请求 3.前台线程每次按照18条记录读取数据库数据,后台线程按照每次18*3从网络请求数据 4.后台线程数据的请求由主线程满足一定的条件后发送总线事件,在 oneventbackgroudthread 中处理,具体条件(或的关系)如下: 1>第一次请求 2>本

新版Android代码分析,生成的代码都有什么用?

刚开始学习,新手,欢迎拍砖和鄙视. 直接入题,新版Android的主要代码分析: 1 package com.bslk.helloworld; 2 /*1.这里的导入包,会有报警告的地方,因为没有使用,已干掉了,其他不管,现在应该0Err0Warn*/ /*2.这是一些导入的包,具体的不解释,不纠结,不懂自己度娘,问了我会鄙视你的*/ 3 import android.support.v7.app.ActionBarActivity; 4 import android.support.v4.ap

Android核心分析28篇,强烈推荐android初学者,android进阶者看看这个系列教程

Android核心分析 之一分析方法论探讨之设计意图 http://www.apkbus.com/android-24212-1-1.html Android核心分析 之二方法论探讨之概念空间篇 http://www.apkbus.com/android-24213-1-1.html Android是什么 之三手机之硬件形态 http://www.apkbus.com/android-24215-1-2.html Android核心分析之四手机的软件形态 http://www.apkbus.co

ansible代码分析第一篇--主文件—ansible分析

2016年2月23日,学习,分析ansible代码 ansible是一种运维中使用的批量部署的工具,它本身是一种框架,具体的部署和架构分析,下面这篇文章讲的不错. http://os.51cto.com/art/201409/451927_all.htm 首先分析主文件ansible,代码和注释如下: 1. from __future__ import (absolute_import, division, print_function) 2. __metaclass__ = type 3. _

如何分析android的OOM,与java静态代码分析工具

用MAT分析OOM 很多OOM看似发生在bitmap 分配得时候,但它一般不是rootcause.根本原因都在于本应该自动释放的资源,因为代码的错误,而导致某些对象一直被引用(Reference),例如 Android 内存优化,如何避免OOM 文章中提到的Activity 的mContext 引用. 当代码量很庞大的时候,单靠读代码查找错误是很困难的,所以必须借助于工具,这里介绍一款很好用的分析工具MAT. 1.下载MAT http://www.eclipse.org/mat/download

Android事件传递机制详解及最新源码分析——ViewGroup篇

在上一篇<Android事件传递机制详解及最新源码分析--View篇>中,详细讲解了View事件的传递机制,没掌握或者掌握不扎实的小伙伴,强烈建议先阅读上一篇. 好了,废话还是少说,直奔主题,开始本篇的ViewGroup事件传递机制探索之旅. 依然从简单的Demo例子现象开始分析 新建安卓工程,首先自定义一个Button以及一个RelativeLayout,很简单,只是重写了主要与事件传递机制相关的方法,代码如下: 自定义WLButton类: 1 public class WLButton e

Android恶意代码分析与渗透测试

这篇是计算机类的优质预售推荐>>>><Android恶意代码分析与渗透测试> 从环境构建到分析,涵盖服务体系全过程:以线上线下技巧为基础,展现虚拟环境渗透测试真方法 编辑推荐 从环境构建到分析,涵盖服务体系全过程 以线上/线下技巧为基础,展现虚拟环境渗透测试真方法 内容简介 本书由"恶意代码分析"和"移动服务诊断"两大主题组成.各章节包含了分析步骤,作者们还亲自编写了黑客大赛应用程序试题,读者可以借此复习学过的内容. Androi

Android艺术——Bitmap高效加载和缓存代码分析(2)

Bitmap的加载与缓存代码分析: 图片的压缩 比如有一张1024*768像素的图像要被载入内存,然而最终你要用到的图片大小其实只有128*96,那么我们会浪费很大一部分内存,这显然是没有必要的,下面是一个实例: public static int calculateInSampleSize(              BitmapFactory.Options options, int reqWidth, int reqHeight) {      // Raw height and widt

Android核心分析 ----- Android电话系统-概述篇

Android电话系统之概述篇 首先抛开Android的一切概念来研究一下电话系统的最基本的描述.我们的手机首先用来打电话的,随后是需要一个电话本,随后是PIM,随后是网络应用,随后是云计算,随后是想我们的手机无所不能,替代PC.但是作为一个电话的基本功能如下: 0)拨叫电话,接听电话,挂断电话,发送短信,网络连接,PIM管理 1)由于电话运营商为我们提供了呼叫等待,电话会议等补充业务,所以我们的手机需要管理多路通话,如何管理? 2)来电时,我们要播出来电铃声,接通时我们需要切换语音通道,这个又