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等問題。內部包含方法cancelAndRemoveByTag
和cancelAndRemoveByNetwork
用於取消請求。
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’,待測試版本穩定後會統一切換正式版。