handleHotReloading

fun handleHotReloading(param: XposedModuleInterface.HotReloadingParam, extra: Array<Any?> = emptyArray()): Boolean

在覆写的 onHotReloading 里直接调用。

把当前 TargetSnapshot 拍平成 Array<Any?> 透传给 HotReloadingParam.setSavedInstanceState, 并返回 true 允许重载继续。如果当前还没通过 initOnPackageLoadedAsTargetReadyinitOnPackageReadyinitOnSystemServerStarting 建立目标 snapshot,会返回 false——此时没有可恢复的状态, 热重载没有意义。

snapshot 数组的内容(StringClassLoaderApplicationInfoBooleanInteger) 全部由 boot / system / app classloader 加载,符合 libxposed 102「setSavedInstanceState 不接受 旧 module classloader 加载的对象」的硬约束。

extra 是使用者要跨代透传的额外数据(如 hook 里记录的宿主对象、构造器 this、额外 classloader),库不解读、原样在 handleHotReloaded 里回传。同样受上述硬约束extra 里只能放宿主 / 系统 classloader 加载的对象,放模块 classloader 创建的对象会让 framework 拒绝本次热重载。

返回值的含义由调用方 onHotReloading 的返回值传递给 framework: 返回 true 表示同意热重载;返回 false 表示模块自身要求 framework 放弃本次热重载请求。 也就是说当本方法返回 false 时,请直接把它作为 onHotReloading 的返回值(默认写法即为 return EzXposed.handleHotReloading(param))。

想完全自定义 saved state 的进阶用法直接覆写 onHotReloading,不要调用本方法。

Parameters

extra

使用者透传的跨代数据,默认空