Android 进阶延伸技术点,你能答出几个?

这篇博客探讨了Android开发中的高级技术,包括组件化原理,如何实现跨组件通信,以及Android的签名机制。组件化旨在解决大型项目的代码组织问题,通过模块化提高开发效率和代码复用。跨组件通信涉及页面跳转、数据传递以及自定义类和方法调用,通常使用ARouter实现。Android的签名机制涉及消息摘要、数字签名和数字证书,确保应用安全。此外,还讨论了Android 5.0到10.0之间的重大更新,如Material Design、动态权限管理等。
摘要由CSDN通过智能技术生成

去管理对各个插件中类的访问,并且做一定的限制。

  • 若使用单 ClassLoader 机制,主工程则可以直接通过类名去访问插件中的类。该方式有个弊端,若两个不同的插件工程引用了一个库的不同版本,则程序可能会出错。

  • 资源加载

  • 原理在于通过反射将插件 apk 的路径加入AssetManager 中并创建 Resource 对象加载资源,有两种处理方式:

  • 合并式:addAssetPath 时加入所有插件和主工程的路径;由于 AssetManager 中加入了所

有插件和主工程的路径,因此生成的Resource 可以同时访问插件和主工程的资

源。但是由于主工程和各个插件都是独立编译的,生成的资源 id 会存在相同的情况,在

访问时会产生资源冲突。

  • 独立式:各个插件只添加自己 apk 路径,各个插件的资源是互相隔离的,不过如果想要实现资源的共享,必须拿到对应的 Resource对象。

6、组件化原理

  • 参考回答:

  • 引入组件化的原因:项目随着需求的增加规模变得越来越大,规模的增大导致了各种业务错中复杂的交织在一起,每个业务模块之间,代码没有约束,带来了代码边界的模糊,代码冲突时有发生, 更改一个小问题可能引起一些新的问题, 牵一发而动全身,增加一个新需求,需要熟悉相关的代码逻辑,增加开发时间

  • 避免重复造轮子,可以节省开发和维护的成本。

  • 可以通过组件和模块为业务基准合理地安排人力,提高开发效率。

  • 不同的项目可以共用一个组件或模块,确保整体技术方案的统一性。

  • 为未来插件化共用同一套底层模型做准备。

  • 组件化开发流程就是把一个功能完整的 App 或模块拆分成多个子模块(Module),每个子模块可以独立编译运行,也可以任意组合成另一个新的 App 或模块,每个模块即不相互依赖但又可以相互交互,但是最终发布的时候是将这些组件合并统一成一个 apk,遇到某些特殊情况甚至可以升级或者降级

  • 举个简单的模型例子

App 是主 application,ModuleA 和 ModuleB 是两个业务模块(相对独立,互不影响),Library 是基础模块,包含所有模块需要的依赖库,以及一些工具类:如网络访问、时间工具等

  • 注意:提供给各业务模块的基础组件,需要根据具体情况拆分成 aar 或者 library,像登录,基础网络层这样较为稳定的组件,一般直接打包成 aar,减少编译耗时。而像自定义 View 组件,由于随着版本迭代会有较多变化,就直接以源码形式抽离成 Library

7、跨组件通信

  • 参考回答:

  • 跨组件通信场景

  • 第一种是组件之间的页面跳转 (Activity 到 Activity, Fragment 到 Fragment, Activity 到 Fragment, Fragment 到 Activity) 以及跳转时的数据传递 (基础数据类型和可序列化的自定义类类

型)。

  • 第二种是组件之间的自定义类和自定义方法的调用(组件向外提供服务)。

  • 跨组件通信方案分析

  • 第一种组件之间的页面跳转实现简单,跳转时想传递不同类型的数据提供有相应的 API 即可。

  • 第二种组件之间的自定义类和自定义方法的调用要稍微复杂点,需要 ARouter 配合架构中的 公共服务(CommonService) 实现:

  • 提供服务的业务模块:

  • 在公共服务(CommonService) 中声明 Service接口 (含有需要被调用的自定义方法), 然后在自己的模块中实现这个 Service 接口, 再通过 ARouter API 暴露

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值