Android 组件化应该做什么

33 篇文章 1 订阅
7 篇文章 0 订阅

前言

Android 任何一个组件化方案都要对项目进行一定程度的整改,下面会对所有需要整改的地方进行说明,以及会说到如何整改

资源文件

资源文件在准备组件化的过程中就得做,不会影响正常的开发,一旦后续需要彻底剥离的时候,就直接把对应的文件拖到指定的模块就可以了

公用的资源

一个项目中肯定有一些是每一个地方都可能用到的资源,所以会有一个模块去存放这些东西,我可能新建一个 “ModuleResource” 去放这些资源,然后使用一个固定的前缀去命名,比如颜色白色: resource_white
确定字符串:resource_confirm

Layout

Layout 文件的名称需要对应的模块前缀,比如用户模块的登录界面,用户模块为 “User”,所以这里的登录界面的布局文件名称为 user_login_act
比如用户模块的登录界面一个提示框, “user_login_tip_dialog”

drawable

同 Layout 的方式

string

这个资源不同于 Layout 和 drawable,我建议是把所有字符串都放到 ModuleResource 公共资源包中,以后做国际化也方便,而且字符串没必要按照模块划分

style & theme

一般来说,颜色的使用都是根据场景和组件来的,Google也是这样子做的,所以这东西页也没法模块划分,所以直接放到 ModuleResource 公共资源包中,做好场景和组件的颜色声明就好了,但是如果后期项目实在是做大了,也可以在自己的模块中去声明自己模块的颜色

功能的拆分

当只有一个 app module 的时候,我们所有的代码都能引用到,导致各种功能之间互相引用,所以在准备组件化的时候,我们应该把一个一个的功能提取出来,写成 接口-实现类 的方式,然后配合一个组件化方案,暴露接口隐藏实现类,让之后分模块了之后也能跨模块调用,这点很重要,实现组件化过程中很重的一环,而且做这个事情也会让你的项目每一个模块职责更加的明了

业务模块

每一个业务模块都需要有一个唯一的包名,这样内部的文件就肯定不会重合到了

界面的跳转

使用任何一个组件化方案,都基本上有路由这个功能,它可以让你跨模块的启动 Activity 界面,屏蔽实现,暴露 uri.但是也有一些组件化方案比如 cc组件化,它没有这个概念,虽然也有类似的 host 和 path 的调用,但是本身不是基于 Uri 实现的,所以对于这方面我更加喜欢 ARouter 或者 WMRouter 或者 ActivityRouter,这些都是基于 Uri 的

基于 Uri 其实是有好处的,首先很多地方的跳转都可以用链接表示,很方便.而且我可以添加各种 query 参数来传递数据给目标界面

总结

组件化方案很多,但是我建议大家都能深入了解一点组件化,选择一个适合自己的,这里我也有一个组件化的方案,相比来说,有以下的优点

  • 只要有 Context 或者 Fragment,就能代替 onActivityResult,直接跳转回调里面拿数据(支持第三方界面和系统界面),这点非常有用,不然你就要被 onActivityResult 束缚
  • 支持手动取消路由,还有当对应发起的 Fragment 或者 Activity 销毁的时候,自动会取消相关的路由
  • 拦截器种类中有一种特殊的页面拦截器,简明扼要的说就是进入目标界面之前会自动执行的拦截器,这种拦截器特别的有用,比如给目标界面标记一个登录拦截器,那么这个界面就必须登录才能进去
  • 能为每一个业务模块提供一个声明周期,让每一个业务模块有初始化和销毁的机会
  • 其他功能可能其他框架也具备,这里也就不在细说了

这是开源的方案的地址,感兴趣的可以看看,欢迎 star 或者 fork

https://github.com/xiaojinzi123/Component

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值