为什么要使用到 代理 Activity 模式


在我们使用到动态加载的时候,需要动态的将 Activity 应用进去,而 Activity 作为四大组件之一是需要在清单文件中注册后才能以标准Intent的方式启动的,通过 ClassLoader 加载并实例化的 Activity 只是一个不带有 Activity 生命周期的普通 Java 对象,它没有 Activity 的生命周期,也就意味着没有 Context ,没有 Context 也就意味着他只是普通的 Java 对象

没有 Activity 生命周期

没有 Context

代理 Activity 模式


在项目中注册一个 代理的 ProxyActivity,ProxyActivity 是一个普通的 Activity,可以想成是一个壳,自身什么都没有,只是起到了代理作用,ProxyActivity 只是负责被引用,实际业务逻辑由引用它的类控制,也就相当于 ProxyActivity 是肉机,真正操控它的是动态加载进去的 Activity .

ProxtActivity + 没注册的 Activity = Activity

处理 Activity 生命周期


除非你是做 room 的否则应该是没有别的什么好办法来出理 Activity 生命周期了,一个 Activity 启动起来,如果不采用标准的 Intent 方式,没有经历过 Activity 系统 Framework 层级的一系列初始化和注册过程,它的生命周期方法是不会被调用的.