BasePrj使用说明

来源:互联网 发布:js 7.62毫米狙击枪 编辑:程序博客网 时间:2024/05/21 14:56

1、概述

BasePrj包含两部分内容:一是公共资源业务等;一是注册登录个人中心模块。

其中使用到的第三方库包括:时间传递机制:EventBus;json数据解析:Gson;数据库模块litepal,gif图片显示:giflib等。

当然这里还用到了之前提到的VolleySupport和FrescoSupport.

2 公共业务

该模块位于`com.het.common下.以下是模块UML图:
这里写图片描述

其中,AppContext(图中未给出)是改模块全局注册类,包含一个初始化方法init,初始化了volley,Fresco,litepal等模块。建立使用此模块时,在你的应用的application的onCreate中调用此方法(只调用一次)

NetworkBuilder和IBaseNetwork是对外提供的网络请求基类,用于处理网络访问。HetNetworkBuilder和IHetBaseNetwork是针对Het服务器业务的封装。
其中build部分参数说明详见注释,很清晰。

对于服务器数据的解析,提供了接口IJsonCodeParse。目前有两个实现

BaseJsonCodeParse:对服务器返回的数据未做处理,直接返回。HetJsonCodeParse:解析了json最外层的RetModel,处理了token相关的错误,并根据code区分业务是成功还是失败。

MulipartBaseNetwork是针对上传流的封装。

NetworkQueueManager用于管理请求队列,协助处理token异常下刷新token等问题。内部包含方法cancelAndRemoveByTagcancelAndRemoveByNetwork用于取消请求。

TokenManager 用于全局管理token,所有的token处理操作,包括登陆时设置,退出登陆时候取消(详细见后面登录公共模块分析),强烈建议统一走此入口。

模块中包含了utils包,全局工具类。还包含了resource,全局公共控件库。

2.1 公共模块使用说明

接口使用方式示例:

  public static void login(ICallback callback, String account, String password, int id) {        TreeMap<String, String> params = new TreeMap<String, String>();        params.put(ParamContant.User.ACCOUNT, account);        params.put(ParamContant.User.PASSWORD, SecurityUtils.encrypt4login(password, AppContext.getAppSecret()));        new HetNetworkBuilder(new HetBaseNetwork()).setCallBack(callback)                .setParams(params).setUrl(ComUrls.SERVER_HOST + AccountUrls.Login.LOGIN).setMethod(Request.Method.POST).setId(id).setNoAccessToken().setSign().setHttps().commit();    }

对于het业务的请求,使用默认的HetJsonCodeParse解析就好,会最终回调callback接口给ui层处理业务逻辑

对于其他第三方的请求,可以参考HetJsonCodeParse,完成解析和回调。

这一层主要是处理网络请求,时序图如下:

这里写图片描述

3 账号体系

这部分请艳国更新和完善,一下为简单介绍:

该模块处理了用户注册登录找回密码等内容(包括第三方登录部分)

提供了几个对外接口:

LoginManager:登录的全局管理类,包含以下:    HetLogin het登录    SinaWeiboLogin  新浪微博第三方登录    WeiXinlogin 微信第三方登录UserManager 用户信息管理全局类:所有的用户操作走此接口。

目前登录/注册等完成后都会初始化房间信息,好友信息(从服务器获取)。可以直接使用。

4 好友模块

friend包下

提供了一个FriendManager全局类,用于管理好友。强烈建议所有好友操作的入口为此类。

当好友信息变更的时候,会抛出eventbus事件FriendChangeEvent;当有选择好友列表中的好友事件时,会抛出eventbus事件FriendChooseEvent;需要捕获此类事件的activity可以通过如下代码获取事件监听回调。

public void onEventMainThread(FriendChangeEvent event){    //处理业务逻辑UI线程        }public void onEvent(FriendChooseEvent event){    //处理业务逻辑非UI线程        }

5 房间模块

room包下

提供了一个RoomManager全局类,用于管理房间信息。强烈建议所有房间操作的入口为此类。

当房间信息变更的时候,同样包含两个eventbus事件RoomChangeEvent,RoomChooseEvent,用法同上。

6 个人中心模块

这部分请艳国更新和完善。

7 源码和maven

源码地址为:见svn的maven目录。
svn请使用测试版地址:compile ‘com.android.common:BaseProject:1.2.0-SNAPSHOT’,待测试版本稳定后会统一切换正式版。

1 0