diff --git a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.md b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.md index 029a9078..50f4bf9e 100644 --- a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.md +++ b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.md @@ -96,7 +96,7 @@ fun Context.prefs(name: String): YukiHookPrefsBridge **Function Illustrate** -> 获取 `YukiHookPrefsBridge` 对象。 +> 创建 `YukiHookPrefsBridge` 对象。 可以同时在模块与 (Xposed) 宿主环境中使用。 @@ -116,7 +116,7 @@ fun Context.dataChannel(packageName: String): YukiHookDataChannel.NameSpace **Function Illustrate** -> 获取模块的数据通讯桥命名空间对象。 +> 获取 `YukiHookDataChannel` 对象。 ::: danger diff --git a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md index 7c845f89..b35f2464 100644 --- a/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md +++ b/docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md @@ -252,7 +252,7 @@ val prefs: YukiHookPrefsBridge **Function Illustrate** -> 获得当前使用的存取数据对象缓存实例。 +> 创建 `YukiHookPrefsBridge` 对象。 ::: danger @@ -276,7 +276,7 @@ fun prefs(name: String): YukiHookPrefsBridge **Function Illustrate** -> 获得当前使用的存取数据对象缓存实例。 +> 创建 `YukiHookPrefsBridge` 对象。 你可以通过 `name` 来自定义 Sp 存储的名称。 @@ -298,7 +298,7 @@ val dataChannel: YukiHookDataChannel.NameSpace **Function Illustrate** -> 获得当前使用的数据通讯桥命名空间对象。 +> 获取 `YukiHookDataChannel` 对象。 ::: danger diff --git a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.md b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.md index 04b27bbd..cd8ea4b2 100644 --- a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.md +++ b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.md @@ -88,7 +88,7 @@ fun Context.prefs(name: String): YukiHookPrefsBridge **功能描述** -> 获取 `YukiHookPrefsBridge` 对象。 +> 创建 `YukiHookPrefsBridge` 对象。 可以同时在模块与 (Xposed) 宿主环境中使用。 @@ -108,7 +108,7 @@ fun Context.dataChannel(packageName: String): YukiHookDataChannel.NameSpace **功能描述** -> 获取模块的数据通讯桥命名空间对象。 +> 获取 `YukiHookDataChannel` 对象。 ::: danger diff --git a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md index a54c8b9f..4ecfb5df 100644 --- a/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md +++ b/docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md @@ -244,7 +244,7 @@ val prefs: YukiHookPrefsBridge **功能描述** -> 获得当前使用的存取数据对象缓存实例。 +> 创建 `YukiHookPrefsBridge` 对象。 ::: danger @@ -268,7 +268,7 @@ fun prefs(name: String): YukiHookPrefsBridge **功能描述** -> 获得当前使用的存取数据对象缓存实例。 +> 创建 `YukiHookPrefsBridge` 对象。 你可以通过 `name` 来自定义 Sp 存储的名称。 @@ -290,7 +290,7 @@ val dataChannel: YukiHookDataChannel.NameSpace **功能描述** -> 获得当前使用的数据通讯桥命名空间对象。 +> 获取 `YukiHookDataChannel` 对象。 ::: danger diff --git a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.kt b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.kt index daa3f339..04db07c4 100644 --- a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.kt +++ b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.kt @@ -97,7 +97,7 @@ val Context.modulePrefs get() = prefs() fun Context.modulePrefs(name: String) = prefs(name) /** - * 获取 [YukiHookPrefsBridge] 对象 + * 创建 [YukiHookPrefsBridge] 对象 * * 可以同时在模块与 (Xposed) 宿主环境中使用 * @@ -107,10 +107,10 @@ fun Context.modulePrefs(name: String) = prefs(name) * @param name 自定义 Sp 存储名称 - 默认空 * @return [YukiHookPrefsBridge] */ -fun Context.prefs(name: String = "") = YukiHookPrefsBridge.instance(context = this).let { if (name.isNotBlank()) it.name(name) else it } +fun Context.prefs(name: String = "") = YukiHookPrefsBridge.from(context = this).let { if (name.isNotBlank()) it.name(name) else it } /** - * 获取模块的数据通讯桥命名空间对象 + * 获取 [YukiHookDataChannel] 对象 * * - ❗只能在模块环境使用此功能 - 其它环境下使用将不起作用 * @param packageName 目标 Hook APP (宿主) 包名 diff --git a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/param/PackageParam.kt b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/param/PackageParam.kt index 1468f836..1fdac3a6 100644 --- a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/param/PackageParam.kt +++ b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/param/PackageParam.kt @@ -178,15 +178,15 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper: else YukiXposedModule.dynamicModuleAppResources) ?: error("Current Hook Framework not support moduleAppResources") /** - * 获得当前使用的存取数据对象缓存实例 + * 创建 [YukiHookPrefsBridge] 对象 * * - ❗作为 Hook API 装载时无法使用 - 会抛出异常 * @return [YukiHookPrefsBridge] */ - val prefs get() = YukiHookPrefsBridge.instance() + val prefs get() = YukiHookPrefsBridge.from() /** - * 获得当前使用的存取数据对象缓存实例 + * 创建 [YukiHookPrefsBridge] 对象 * * - ❗作为 Hook API 装载时无法使用 - 会抛出异常 * @param name 自定义 Sp 存储名称 @@ -195,7 +195,7 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper: fun prefs(name: String) = prefs.name(name) /** - * 获得当前使用的数据通讯桥命名空间对象 + * 获取 [YukiHookDataChannel] 对象 * * - ❗作为 Hook API 装载时无法使用 - 会抛出异常 * @return [YukiHookDataChannel.NameSpace] diff --git a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.kt b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.kt index 0782503f..8f36d828 100644 --- a/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.kt +++ b/yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.kt @@ -64,9 +64,6 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu /** 当前是否为 (Xposed) 宿主环境 */ private val isXposedEnvironment = YukiXposedModule.isXposedEnvironment - /** 当前 [YukiHookPrefsBridge] 单例 */ - private var instance: YukiHookPrefsBridge? = null - /** 当前缓存的 [XSharedPreferencesDelegate] 实例数组 */ private val xPrefs = HashMap() @@ -74,12 +71,11 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu private val sPrefs = HashMap() /** - * 获取 [YukiHookPrefsBridge] 单例 - * @param context 实例 - (Xposed) 宿主环境为空 + * 创建 [YukiHookPrefsBridge] 对象 + * @param context 实例 - (Xposed) 宿主环境为空 * @return [YukiHookPrefsBridge] */ - internal fun instance(context: Context? = null) = - instance?.apply { if (context != null) this.context = context } ?: YukiHookPrefsBridge(context).apply { instance = this } + internal fun from(context: Context? = null) = YukiHookPrefsBridge(context) /** * 设置全局可读可写 @@ -302,7 +298,7 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu else resetCacheSet { currentXsp.getString(key, value) ?: value } else currentSp.getString(key, value) ?: value).let { makeWorldReadable() - resetNativeSet { it } + it } /** @@ -327,7 +323,7 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu else resetCacheSet { currentXsp.getStringSet(key, value) ?: value } else currentSp.getStringSet(key, value) ?: value).let { makeWorldReadable() - resetNativeSet { it } + it } /** @@ -352,7 +348,7 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu else resetCacheSet { currentXsp.getBoolean(key, value) } else currentSp.getBoolean(key, value)).let { makeWorldReadable() - resetNativeSet { it } + it } /** @@ -377,7 +373,7 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu else resetCacheSet { currentXsp.getInt(key, value) } else currentSp.getInt(key, value)).let { makeWorldReadable() - resetNativeSet { it } + it } /** @@ -402,7 +398,7 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu else resetCacheSet { currentXsp.getFloat(key, value) } else currentSp.getFloat(key, value)).let { makeWorldReadable() - resetNativeSet { it } + it } /** @@ -427,7 +423,7 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu else resetCacheSet { currentXsp.getLong(key, value) } else currentSp.getLong(key, value)).let { makeWorldReadable() - resetNativeSet { it } + it } /** @@ -641,16 +637,6 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu return result() } - /** - * 恢复 [isUsingNativeStorage] 为默认状态 - * @param result 回调方法体的结果 - * @return [T] - */ - private inline fun resetNativeSet(result: () -> T): T { - isUsingNativeStorage = false - return result() - } - /** * [YukiHookPrefsBridge] 的存储代理类 * @@ -800,10 +786,10 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu * 提交更改 (同步) * @return [Boolean] 是否成功 */ - fun commit() = resetNativeSet { editor?.commit()?.also { makeWorldReadable() } ?: false } + fun commit() = editor?.commit()?.also { makeWorldReadable() } ?: false /** 提交更改 (异步) */ - fun apply() = resetNativeSet { editor?.apply().also { makeWorldReadable() } ?: Unit } + fun apply() = editor?.apply().also { makeWorldReadable() } ?: Unit /** * 仅在模块环境执行