此文已由作者徐铭阳授权网易云社区发布。

欢迎访问

前言

最近在做需求过程中,一些类似学校选择、城市选择等业务相关模块想单独抽离出来,遇到一些诸如模块管理、通信方面的问题来

背景

最近有一个需求是学校列表,没错,就是我们平时总见到的类似微信通讯录的需求,单看这个需求的话实现不复杂,网上也会有一些类似的实现。

中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入口中注册该模块提供的服务

实现

如有问题欢迎指正交流

网易云

更多网易技术、产品、运营经验分享请

android 资源如何下沉,关于Android业务模块下沉的一些实践及总结相关推荐

  1. android资源替换方案overlay,Android 运行时资源替换----Runtime Resource Overlay

    先抛一个问题:现在有一个第三方应用,没有代码,只有编译好的apk,在不去改动这个apk的前提下,如果想改变这个应用中的一些资源显示效果,比如改变一个button的文字,一个imageview的背景,有 ...

  2. android资源编译失败,在android studio中打开一个新项目时,Android资源编译失败

    用我的android studio打开新项目时出现此错误 Android资源编译失败输出:C:\ Projects \ Popular2 \ app \ src \ main \ res \ draw ...

  3. android资源透明背景,@谷歌android帝 这是你想要的,全局透明背景教程,两种方法...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先大家提取原生态没有任何修改过的framework-res.apk,反编译,(这里特别交代一下,大家要看仔细了,全局背景化透明化的修改是有两种修改的方法 ...

  4. android资源文件转bitmap,Android 之 Bitmap 和 File 相互转换

    图片文件转为Bitmap对象 String filePath="c:/01.jpg"; Bitmap bitmap=BitmapFactory.decodeFile(filePat ...

  5. Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组

    一. Android资源文件简介 1. Android应用资源的作用 (1) Android项目中文件分类 在Android工程中, 文件主要分为下面几类 : 界面布局文件, Java src源文件, ...

  6. 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组

    . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19913755 . 一. Android资源文件简介 1 ...

  7. 【Android 应用开发】Android资源文件 - 使用资源存储字符串 颜色 尺寸 整型 布尔值 数组...

    . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/19913755 . 一. Android资源文件简介 1 ...

  8. 【我的Android进阶之旅】Android 混淆文件资源分类整理之二:将混淆文件拆分成更小粒度的混淆文件

    在我2017年的文章[我的Android进阶之旅]Android 混淆文件资源分类整理中,我已经提及过. 之前将所有的混淆都配置在一个 proguard-rules.pro 这个Android Stu ...

  9. 1.2、Android Studio为新设备创建一个模块

    2019独角兽企业重金招聘Python工程师标准>>> 模块为你的应用的源码.资源文件和app level设置(比如AndroidManifest.xml)提供了一个容器.每个模块可 ...

最新文章

  1. USACO Broken Necklace 题解(环展开成链,枚举)
  2. MySQL的版本以及版本号
  3. [深度学习] Normalization 模型
  4. 拒绝CPU挖矿矿工有责
  5. MAC终端下常用Git命令 - 某个人 - 博客园
  6. list lt map gt java_利用Set 对Listlt;Maplt;String,Objectgt;gt; 中的map对象中某一个属性去重...
  7. 12个写论文必备的神经网络可视化工具
  8. 为什么我们要阅读源码?
  9. 第6讲 Zend 整合数据库
  10. windows环境下oracle安装教程
  11. 国产数据库及厂商介绍
  12. HTML中关于使用 innerHTML 动态创建DOM节点时,相关事件(如onclick等)失效的解决方案
  13. 【Mybatis入门20221024】
  14. winscp登录主机拒绝_winscp连接被拒绝怎么解决
  15. [渝粤教育] 广东-国家-开放大学 21秋期末考试马克思主义基本原理概论(A)10882k1
  16. 【C语言】输入一个正整数 n,输入 n 个数,生成一个 n*n 的矩阵, 矩阵中第 1 行是输入的 n 个数,以后每一行都是上一行循环左移一个元素。
  17. 利用python提取基因cDNA长度,exon数量,pep长度和PI
  18. 美团外卖Flutter动态化实践
  19. java面试自我介绍百度云,java面试自我介绍
  20. java 循环new对象_java中new一个对象放在循环体里面与外面的区别

热门文章

  1. 梳子刻字刻什么好_校园石阶上被人刻了1700多个字?!这次网友却说好
  2. python制作圆形按钮_C#圆形按钮,非常漂亮动态
  3. 逆元java_逆元 - 阿聊 - 博客园
  4. 简记模态对话框和非模态对话框
  5. mysql 中 end like,MySQL 这三道必问面试题,你都会吗?
  6. java如何实现信号量_使用二进制信号量实现通用信号量
  7. java 类 方法继承_java – 在方法重写中返回继承的类而不是超类
  8. lua_path环境变量设置linux,ubuntu16.04安装lua环境
  9. 杭电2005题c语言答案,杭电2005
  10. 指针 是否相同_算法一招鲜——双指针问题