handleHotReloaded

fun handleHotReloaded(base: XposedInterface, param: XposedModuleInterface.HotReloadedParam, onOldHooks: Consumer<List<XposedInterface.HookHandle>>? = null, onExtra: Consumer<Array<Any?>>? = null)

在覆写的 onHotReloaded 里直接调用。

这里完成以下事情:

未传 onOldHooks 时,会启用默认自动流程:

  1. 在新 hook 注册前读取旧 handle 的 executable 与 hook ID;

  2. 还原 snapshot,触发 onTargetReady 同步重新安装 hook;

  3. 使用默认聚合 ID 或显式 ID 原子替换同名旧 hook;

  4. 仅在新 generation 完整安装成功后 unhook 未继续声明的旧 handle。

因此默认流程不会出现“先全部 unhook、再等待新 hook 安装”的空窗。传入 onOldHooks 即改为 完全自定义旧 handle 处置,工具不会替调用方 unhook。

默认自动流程要求 hook 初始化位于 onTargetReady 的同步回调中,且旧 handle 都有 hook ID。 初次从无 ID 的旧版本迁移时会拒绝本次热重载,保留旧实现并要求完整重启一次目标进程。

Parameters

onOldHooks

上一代 hook handle 的自定义处置策略;null 表示使用默认自动原子替换流程

onExtra

接收 handleHotReloading 透传的 extranull 表示忽略