Android-DLPlugin插件化框架

介绍
DynamicLoadApk 原理的核心思想可以总结为两个字:代理。通过在 Manifest 中注册代理组件,当启动插件组件时首先启动一个代理组件,然后通过这个代理组件来构建、启动插件组件。从而实现了动态添加插件的效果。

插件类介绍
DLPluginManager
     插件管理模块,负责插件的加载、管理以及启动插件组件。
Proxy
     代理组件模块,目前包括 DLProxyActivity(代理 Activity)、DLProxyFragmentActivity(代理 FragmentActivity)、DLProxyService(代理 Service)。
ProxyImpl
     代理组件公用逻辑模块,与上面的 Proxy 不同的是,这部分并不是一个组件,而是负责构建、加载插件组件的管理器。主要封装了插件Activity的公用逻辑,如初始化插件 Activity 并和代理 Activity 绑定、获取资源等,相当于把DLProxyActivity和DLProxyFragmentActivity的公共实现部分提出出来。
BasePlugin
     插件组件的基类模块,目前包括 DLBasePluginActivity(插件 Activity 的基类)、DLBasePluginFragmentActivity(插件 FragmentActivity 的基类)、DLBasePluginService(插件 Service 的基类)。 

插件框架UML


插件执行流程
  1. 首先通过 DLPluginManager 的 loadApk 函数加载插件,这步每个插件只需调用一次,将插件包的信息都加载到宿主程序中
  2. 通过 DLPluginManager 的 startPluginActivity 函数启动代理 Activity(DLProxyActivity和DLProxyFragmentActivity)
  3. 代理 Activity 启动过程中通过ProxyImpl来构建、启动插件 Activity,并且通过调用Plugin接口来完善生命周期


加载插件流程图
加载插件,其实就是调用了DLPluginManager.loadApk()方法,然后在此方法中解析插件包中的各种信息,例如Activity信息,默认启动的Activity信息等等。下面是详细加载流程图:


启动插件Activity流程图
启动插件中的Activity,就是调用了DLPluginManager.startPluginActivity()方法。然后,解析插件包中的对象Activity类,并根据插件Activity创建代理Activity类,并在代理Activity容器中构建插件Activity。下面是调用插件Activity的流程图:


DLProxyImpl初始化流程图
DLProxyImpl 主要封装了插件Activity的公用逻辑,如初始化插件 Activity 并和代理 Activity 绑定、获取资源等,相当于把DLProxyActivity和DLProxyFragmentActivity的公共实现部分提出出来。下面是DLProxyImpl在代理Activity的创建过程,PS:DLProxyImpl的初始化过程在onCreate()方法中完成,下面是onCreate()的执行流程:


参考
http://blog.csdn.net/singwhatiwanna/article/details/40283117


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值