Notice

The English translation of this page has not been completed, you are welcome to contribute translations to us.

You can use the Chrome Translation Plugin to translate entire pages for reference.

YukiHookDataChannel - class

class YukiHookDataChannel private constructor()

Change Records

v1.0.88 added

Function Illustrate

实现 Xposed 模块的数据通讯桥。

通过模块与宿主相互注册 BroadcastReceiver 来实现数据的交互。

模块需要将 Application 继承于 ModuleApplication 来实现此功能。

Pay Attention

模块与宿主需要保持存活状态,否则无法建立通讯。

NameSpace - class

inner class NameSpace internal constructor(private val context: Context?, private val packageName: String)

Change Records

v1.0.88 added

v1.0.90 modified

新增 isSecure 参数

v1.1.9 modified

移除 isSecure 参数

Function Illustrate

YukiHookDataChannel 命名空间。

with - method

inline fun with(initiate: NameSpace.() -> Unit): NameSpace

Change Records

v1.0.88 added

Function Illustrate

创建一个调用空间。

dataMaxByteSize - field

var dataMaxByteSize: Int

Change Records

v1.1.9 added

Function Illustrate

YukiHookDataChannel 允许发送的最大数据字节大小。

默认为 500 KB (500 * 1024),详情请参考 receiverDataMaxByteSize 的注释。

最小不能低于 100 KB (100 * 1024),否则会被重新设置为 100 KB (100 * 1024)

设置后将在全局生效,直到当前进程结束。

超出最大数据字节大小后的数据将被自动分段发送。

Pay Attention

请谨慎调整此参数,如果超出了系统能够允许的大小会引发 TransactionTooLargeException 异常。

dataMaxByteCompressionFactor - field

var dataMaxByteCompressionFactor: Int

Change Records

v1.1.9 added

Function Illustrate

YukiHookDataChannel 允许发送的最大数据字节大小倍数 (分段数据)。

默认为 3,详情请参考 receiverDataMaxByteCompressionFactor 的注释。

最小不能低于 2,否则会被重新设置为 2

设置后将在全局生效,直到当前进程结束。

超出最大数据字节大小后的数据将按照此倍数自动划分 receiverDataMaxByteSize 的大小。

Pay Attention

请谨慎调整此参数,如果超出了系统能够允许的大小会引发 TransactionTooLargeException 异常。

allowSendTooLargeData - method

fun allowSendTooLargeData(): NameSpace

Change Records

v1.1.5 added

Function Illustrate

解除发送数据的大小限制并禁止开启分段发送功能。

仅会在每次调用时生效,下一次没有调用此方法则此功能将被自动关闭。

你还需要在整个调用域中声明注解 SendTooLargeChannelData 以消除警告。

Pay Attention

若你不知道允许此功能会带来何种后果,请勿使用。

put - method

fun <T> put(key: String, value: T)
fun <T> put(data: ChannelData<T>, value: T?)
fun put(vararg data: ChannelData<*>)

Change Records

v1.0.88 added

Function Illustrate

发送键值数据。

put - method

fun put(key: String)

Change Records

v1.0.88 added

Function Illustrate

仅发送键值监听,使用默认值 VALUE_WAIT_FOR_LISTENER 发送键值数据。

wait - method

fun <T> wait(key: String, priority: ChannelPriority?, result: (value: T) -> Unit)
fun <T> wait(data: ChannelData<T>, priority: ChannelPriority?, result: (value: T) -> Unit)

Change Records

v1.0.88 added

v1.0.90 modified

移除默认值 value

v1.1.5 modified

新增 priority 参数

Function Illustrate

获取键值数据。

wait - method

fun wait(key: String, priority: ChannelPriority?, callback: () -> Unit)

Change Records

v1.0.88 added

v1.1.5 modified

新增 priority 参数

Function Illustrate

仅获取监听结果,不获取键值数据。

Pay Attention

仅限使用 VALUE_WAIT_FOR_LISTENER 发送的监听才能被接收。

checkingVersionEquals - method

fun checkingVersionEquals(priority: ChannelPriority?, result: (Boolean) -> Unit)

Change Records

v1.0.88 added

v1.1.5 modified

新增 priority 参数

Function Illustrate

获取模块与宿主的版本是否匹配。

通过此方法可原生判断 Xposed 模块更新后宿主并未重新装载造成两者不匹配的情况。

obtainLoggerInMemoryData - method

fun obtainLoggerInMemoryData(priority: ChannelPriority?, result: (List<YLogData>) -> Unit)

Change Records

v1.1.4 added

v1.1.5 modified

新增 priority 参数

Function Illustrate

获取模块与宿主之间的 List<YLogData> 数据。

由于模块与宿主处于不同的进程,我们可以使用数据通讯桥访问各自的调试日志数据。

Pay Attention

模块与宿主必须启用 YLog.Configs.isRecord 才能获取到调试日志数据。

由于 Android 限制了数据传输大小的最大值,如果调试日志过多将会自动进行分段发送,数据越大速度越慢。