此文已由作者徐銘陽授權網易云社區發布。
歡迎訪問
前言
最近在做需求過程中,一些類似學校選擇、城市選擇等業務相關模塊想單獨抽離出來,遇到一些諸如模塊管理、通信方面的問題來
背景
最近有一個需求是學校列表,沒錯,就是我們平時總見到的類似微信通訊錄的需求,單看這個需求的話實現不復雜,網上也會有一些類似的實現。
中M有一些個性化的需求,比如字母索引不是A~Z總共26個字母而是按照學校的名字,假設沒有這個首字母拼音的話這個字母就是不展示的,所以在做這個需求的時候造了個輪子滿足這個需求,不過這個不是本文要說的重點。
由于學校選擇、通訊錄、城市選擇等類似的選擇器功能基本通用,教育產品有好幾個產品,不止中M可能還會有云課堂、K12等也會有類似的需求,所以關于這個選擇器準備作為一個底層業務模塊單獨拆分出來,聯想到之前做中M路由的時候寫過業務模塊管理相關代碼,現在兩個結合起來正好可以滿足需求
需求
edu-android-select模塊注冊
SelectActivity處理完選擇事件之后需要把處理結果返回給調用的上層業務
業務組件懶加載,不需要在app啟動時初始化
解決方案
模塊注冊
framework啟動統一使用配置文件注冊,每個module配置application入口,該application有兩個功能,作為各個模塊路由分發入口,做一些初始化工作,當然除非是模塊運行必須的功能,其他功能不建議放在該入口application中
業務模塊提供的服務在每個模塊application中注冊,接口和實現分離方式,Map中保存鍵值對,鍵對應接口,值對應實現
framework統一管理所有的application和所有的service,上層業務想去獲取某個service時通過ServiceManager獲取,提供統一獲取service方式
回調處理
ICommonService中定義提供外部的接口以及給外部的回調,接口和實現分離
業務service懶加載
每個application入口中注冊該模塊提供的服務
實現
如有問題歡迎指正交流
網易云
更多網易技術、產品、運營經驗分享請