Android AutoService 组件化

本文介绍了Android组件化架构的重要性,详细讲解了AutoService组件化的实现原理,包括依赖添加、@AutoService注解的使用。同时,还探讨了WebView组件的封装,包括创建视图、跨进程通信、命令模式和事件分发。最后总结了AutoService的源码分析以及跨进程通信的关键技术。
摘要由CSDN通过智能技术生成

1.前言 

      随着 App 的业务增加、版本迭代以及冗余的 “远古时期” 代码,App 代码变得臃肿增量叠加、开发者需要了解各个功能、单测功能编译时长、没有统一快速开发框架,代码复用性低,组件化开发就很有必要。

2.组件化架构

  1).组件化架构的思想

      组件化开发框架可以细化为不同的部分,包括 Android UI、网络请求、数据库持久化、图片处理、View、工具类、sdk、内部统一风格组件等;框架包括但不限于通用功能,如果是部门内部项目中通用的功能,也可以独立出来成为一个通用的库存在。          

                                         

 

  2).组件化有哪些方案、各自的优势

① ARouter:基因中自带支持从webview中调用、不用互相注册(不用知道需要调用的app的进程名称等信息)等;

② ComponentCaller:  集成简单、功能丰富、全程监控、改造老项目成本低等;

③ Google AutoService:Google推荐、继承简单、功能强大等;

  3).AutoService 组件化实现

      原理:AutoService会自动在META-INF文件夹下生成Processor配置信息文件,该文件里就是实现该服务接口的具体实现类。而当外部程序装配这个模块的时候, 就能通过该jar包META-INF/services/里的配置文件找到具体的实现类名,并装载实例化,完成模块的注入。

① 添加依赖

implementation 'com.google.code.gson:gson:2.8.6'

② 添加 Javapoet 常用 api

annotationProcessor 'com.google.code.gson:gson:2.8.6'
//Kotlin 需要kapt支持
apply plugin: 'kotlin-android'apply 
plugin: 'kotlin-android-extensions'
//kapt插件、会有很多问题、博客地址:https://www.jianshu.com/p/b58d733bc54eapply 
plugin: 'kotlin-kapt'

③ 使用 @AutoService 注解

//第一步 创建下沉接口
interface IWebViewService {    
fun startWebActivity(context: Context, title: String, url: String)
    fun startWebFragment(url: String): Fragment  
  fun starLocalTestHtml(context: Context)
}// 第二步 实现接口
@AutoService(IWebViewService::class)
class WebViewServiceImpl : IWebViewService { 
   override fun startWebActivity(context: Context, title: String, url: String) {  
      WebActivity.create(context, title, url)   
 }   
 override fun startWebFragment(url: String): Fragment {     
   return WebFragment.create
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值