Skip to content

MethodInvocationProxy · 注入器基类 ​

MethodInvocationProxy<T extends MethodInvocationStub> 实现 IInjector 接口,是所有服务代理注入器的抽象基类。它把「持有 stub + 注册 MethodProxy + 执行注入」三件事组合起来,45 个服务代理都继承它。

核心结构 ​

java
public abstract class MethodInvocationProxy<T extends MethodInvocationStub>
        implements IInjector {
    protected T invocationStub;
    protected void onBindMethods() { }       // 子类注册 MethodProxy
    private void addMethodProxy(Class<?> hookType);  // 反射扫描 @Inject 内部类
    public abstract void inject() throws Throwable;  // IInjector:执行注入
    protected void afterHookApply(T delegate) { }
}

生命周期 ​

@Inject 批量注册 ​

addMethodProxy(Class) 反射扫描带 @Inject 注解的内部类,自动实例化并注册——这样服务代理类只要把每个 hook 写成带 @Inject 的内部类,不必手动 addMethodProxy 逐条注册。带 @SkipInject 的则跳过。

与 stub 的关系 ​

MethodInvocationProxy 是控制器(何时注入、注入哪些代理),MethodInvocationStub 是被控对象(怎么分发)。子类 BinderInvocationProxy 进一步把 stub 落到 binder 替换上。

关联 ​

基于 VirtualApp 与 epic,仅供学习研究。VirtualApp 禁止商用。