查看: 1693|回复: 0

SAMIM专业版--iOS优化之群组优化

[复制链接]

1

主题

1

帖子

7

积分

积分
7
发表于 2018-11-15 18:16:36 | 显示全部楼层 |阅读模式
        群组是聊天中比较重要的模块,群组中的数据处理也较为复杂。单从一个群组来说,它包括了基本的群信息的修改,以及群成员信息的修改,仅从修改群组信息的来说还分为个人对群信息的修改和群成员对群信息的修改,其复杂的程度远远超过单聊,所以对群组模块的优化是很有必要的。
        那么要对群组进行优化就要有一个很清晰的逻辑:
                1、从账号的登录开始,获取账户已经加入的群组信息并存入数据库中,根据存储的数据进行群组的分组处理在群组列表进行显示。将群组存储进数据库后异步请求群组群成员并存储到数据库中,异步请求数据并不会阻塞线程,所以不会影响到用户正常操作。
                2、用户在进行群组聊天时,从数据库中获取群组信息和群成员信息,如果获取到群成员数据库表为空时异步请求数据存入数据库中,防止群组过多时群组成员信息还未获取完成的情况。
                3、在所有群信息和群成员信息存入数据库时,所有的用户操作与群成员的操作就是围绕这数据库来进行,所有的群组信息的修改都只是修改数据库然后从数据库中获取,同样的接收完创建群组的通知后异步获取数据存入数据库,从而避免较多的群信息和群成员信息的请求。
            由于群组的请求和群组数据库的交互比较多,所以在群组数据库整理的时候按照数据库的增删改查进行了分类,这样在进行方法查找和添加的时候也便于浏览和维护。
        我们在群组详情中同样做了优化,对数据的获取显示进行了处理,对群组详情界面的通知也进行了优化,所有的操作都围绕数据库进行这样显示也会进行实时刷新不会出现错乱。在群成员显示时我们对群成员进行了按名称排序,进行了群主群管理排序,同时优化了群成员的界面显示,使界面显示更加的简洁流畅。
        群组的交互比较多,所以响应的需要不同的方法去进行操作,我们将这些操作统一的进行管理,对数据库的操作放到SIMGroupManager中管理,对群组的数据请求放到SIMGroupNetWorkProtocol中管理,不同的操作我们统一使用SIMGroupControl进行操作。使用SIMGroupControl我们可以在不同的界面使用相同的方法,对不同的数据进行分类处理,这样一来降低了代码的冗余也让代码的维护变得更为轻松,同时也方便了后续功能的添加。

回复

使用道具 举报

友情链接

热点

返回列表 发新帖
您需要登录后才可以回帖 登录

本版积分规则

Copyright © 2018 SAMIM.All Rights Reserved

快速回复 返回顶部 返回列表