Skip to content

Commit f9cdcc5

Browse files
committed
Modify make YukiHookPrefsBridge not singleton to fix some duplicate assignment problems and change code note in documentation
1 parent b41897f commit f9cdcc5

File tree

7 files changed

+28
-42
lines changed

7 files changed

+28
-42
lines changed

docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ fun Context.prefs(name: String): YukiHookPrefsBridge
9696

9797
**Function Illustrate**
9898

99-
> 获取 `YukiHookPrefsBridge` 对象。
99+
> 创建 `YukiHookPrefsBridge` 对象。
100100
101101
可以同时在模块与 (Xposed) 宿主环境中使用。
102102

@@ -116,7 +116,7 @@ fun Context.dataChannel(packageName: String): YukiHookDataChannel.NameSpace
116116

117117
**Function Illustrate**
118118

119-
> 获取模块的数据通讯桥命名空间对象
119+
> 获取 `YukiHookDataChannel` 对象
120120
121121
::: danger
122122

docs-source/src/en/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -252,7 +252,7 @@ val prefs: YukiHookPrefsBridge
252252

253253
**Function Illustrate**
254254

255-
> 获得当前使用的存取数据对象缓存实例
255+
> 创建 `YukiHookPrefsBridge` 对象
256256
257257
::: danger
258258

@@ -276,7 +276,7 @@ fun prefs(name: String): YukiHookPrefsBridge
276276

277277
**Function Illustrate**
278278

279-
> 获得当前使用的存取数据对象缓存实例
279+
> 创建 `YukiHookPrefsBridge` 对象
280280
281281
你可以通过 `name` 来自定义 Sp 存储的名称。
282282

@@ -298,7 +298,7 @@ val dataChannel: YukiHookDataChannel.NameSpace
298298

299299
**Function Illustrate**
300300

301-
> 获得当前使用的数据通讯桥命名空间对象
301+
> 获取 `YukiHookDataChannel` 对象
302302
303303
::: danger
304304

docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ fun Context.prefs(name: String): YukiHookPrefsBridge
8888

8989
**功能描述**
9090

91-
> 获取 `YukiHookPrefsBridge` 对象。
91+
> 创建 `YukiHookPrefsBridge` 对象。
9292
9393
可以同时在模块与 (Xposed) 宿主环境中使用。
9494

@@ -108,7 +108,7 @@ fun Context.dataChannel(packageName: String): YukiHookDataChannel.NameSpace
108108

109109
**功能描述**
110110

111-
> 获取模块的数据通讯桥命名空间对象
111+
> 获取 `YukiHookDataChannel` 对象
112112
113113
::: danger
114114

docs-source/src/zh-cn/api/public/com/highcapable/yukihookapi/hook/param/PackageParam.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ val prefs: YukiHookPrefsBridge
244244

245245
**功能描述**
246246

247-
> 获得当前使用的存取数据对象缓存实例
247+
> 创建 `YukiHookPrefsBridge` 对象
248248
249249
::: danger
250250

@@ -268,7 +268,7 @@ fun prefs(name: String): YukiHookPrefsBridge
268268

269269
**功能描述**
270270

271-
> 获得当前使用的存取数据对象缓存实例
271+
> 创建 `YukiHookPrefsBridge` 对象
272272
273273
你可以通过 `name` 来自定义 Sp 存储的名称。
274274

@@ -290,7 +290,7 @@ val dataChannel: YukiHookDataChannel.NameSpace
290290

291291
**功能描述**
292292

293-
> 获得当前使用的数据通讯桥命名空间对象
293+
> 获取 `YukiHookDataChannel` 对象
294294
295295
::: danger
296296

yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/factory/YukiHookFactory.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ val Context.modulePrefs get() = prefs()
9797
fun Context.modulePrefs(name: String) = prefs(name)
9898

9999
/**
100-
* 获取 [YukiHookPrefsBridge] 对象
100+
* 创建 [YukiHookPrefsBridge] 对象
101101
*
102102
* 可以同时在模块与 (Xposed) 宿主环境中使用
103103
*
@@ -107,10 +107,10 @@ fun Context.modulePrefs(name: String) = prefs(name)
107107
* @param name 自定义 Sp 存储名称 - 默认空
108108
* @return [YukiHookPrefsBridge]
109109
*/
110-
fun Context.prefs(name: String = "") = YukiHookPrefsBridge.instance(context = this).let { if (name.isNotBlank()) it.name(name) else it }
110+
fun Context.prefs(name: String = "") = YukiHookPrefsBridge.from(context = this).let { if (name.isNotBlank()) it.name(name) else it }
111111

112112
/**
113-
* 获取模块的数据通讯桥命名空间对象
113+
* 获取 [YukiHookDataChannel] 对象
114114
*
115115
* - ❗只能在模块环境使用此功能 - 其它环境下使用将不起作用
116116
* @param packageName 目标 Hook APP (宿主) 包名

yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/param/PackageParam.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -178,15 +178,15 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper:
178178
else YukiXposedModule.dynamicModuleAppResources) ?: error("Current Hook Framework not support moduleAppResources")
179179

180180
/**
181-
* 获得当前使用的存取数据对象缓存实例
181+
* 创建 [YukiHookPrefsBridge] 对象
182182
*
183183
* - ❗作为 Hook API 装载时无法使用 - 会抛出异常
184184
* @return [YukiHookPrefsBridge]
185185
*/
186-
val prefs get() = YukiHookPrefsBridge.instance()
186+
val prefs get() = YukiHookPrefsBridge.from()
187187

188188
/**
189-
* 获得当前使用的存取数据对象缓存实例
189+
* 创建 [YukiHookPrefsBridge] 对象
190190
*
191191
* - ❗作为 Hook API 装载时无法使用 - 会抛出异常
192192
* @param name 自定义 Sp 存储名称
@@ -195,7 +195,7 @@ open class PackageParam internal constructor(@PublishedApi internal var wrapper:
195195
fun prefs(name: String) = prefs.name(name)
196196

197197
/**
198-
* 获得当前使用的数据通讯桥命名空间对象
198+
* 获取 [YukiHookDataChannel] 对象
199199
*
200200
* - ❗作为 Hook API 装载时无法使用 - 会抛出异常
201201
* @return [YukiHookDataChannel.NameSpace]

yukihookapi/src/main/java/com/highcapable/yukihookapi/hook/xposed/prefs/YukiHookPrefsBridge.kt

Lines changed: 11 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -64,22 +64,18 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu
6464
/** 当前是否为 (Xposed) 宿主环境 */
6565
private val isXposedEnvironment = YukiXposedModule.isXposedEnvironment
6666

67-
/** 当前 [YukiHookPrefsBridge] 单例 */
68-
private var instance: YukiHookPrefsBridge? = null
69-
7067
/** 当前缓存的 [XSharedPreferencesDelegate] 实例数组 */
7168
private val xPrefs = HashMap<String, XSharedPreferencesDelegate>()
7269

7370
/** 当前缓存的 [SharedPreferences] 实例数组 */
7471
private val sPrefs = HashMap<String, SharedPreferences>()
7572

7673
/**
77-
* 获取 [YukiHookPrefsBridge] 单例
78-
* @param context 实例 - (Xposed) 宿主环境为空
74+
* 创建 [YukiHookPrefsBridge] 对象
75+
* @param context 实例 - (Xposed) 宿主环境为空
7976
* @return [YukiHookPrefsBridge]
8077
*/
81-
internal fun instance(context: Context? = null) =
82-
instance?.apply { if (context != null) this.context = context } ?: YukiHookPrefsBridge(context).apply { instance = this }
78+
internal fun from(context: Context? = null) = YukiHookPrefsBridge(context)
8379

8480
/**
8581
* 设置全局可读可写
@@ -302,7 +298,7 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu
302298
else resetCacheSet { currentXsp.getString(key, value) ?: value }
303299
else currentSp.getString(key, value) ?: value).let {
304300
makeWorldReadable()
305-
resetNativeSet { it }
301+
it
306302
}
307303

308304
/**
@@ -327,7 +323,7 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu
327323
else resetCacheSet { currentXsp.getStringSet(key, value) ?: value }
328324
else currentSp.getStringSet(key, value) ?: value).let {
329325
makeWorldReadable()
330-
resetNativeSet { it }
326+
it
331327
}
332328

333329
/**
@@ -352,7 +348,7 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu
352348
else resetCacheSet { currentXsp.getBoolean(key, value) }
353349
else currentSp.getBoolean(key, value)).let {
354350
makeWorldReadable()
355-
resetNativeSet { it }
351+
it
356352
}
357353

358354
/**
@@ -377,7 +373,7 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu
377373
else resetCacheSet { currentXsp.getInt(key, value) }
378374
else currentSp.getInt(key, value)).let {
379375
makeWorldReadable()
380-
resetNativeSet { it }
376+
it
381377
}
382378

383379
/**
@@ -402,7 +398,7 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu
402398
else resetCacheSet { currentXsp.getFloat(key, value) }
403399
else currentSp.getFloat(key, value)).let {
404400
makeWorldReadable()
405-
resetNativeSet { it }
401+
it
406402
}
407403

408404
/**
@@ -427,7 +423,7 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu
427423
else resetCacheSet { currentXsp.getLong(key, value) }
428424
else currentSp.getLong(key, value)).let {
429425
makeWorldReadable()
430-
resetNativeSet { it }
426+
it
431427
}
432428

433429
/**
@@ -641,16 +637,6 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu
641637
return result()
642638
}
643639

644-
/**
645-
* 恢复 [isUsingNativeStorage] 为默认状态
646-
* @param result 回调方法体的结果
647-
* @return [T]
648-
*/
649-
private inline fun <T> resetNativeSet(result: () -> T): T {
650-
isUsingNativeStorage = false
651-
return result()
652-
}
653-
654640
/**
655641
* [YukiHookPrefsBridge] 的存储代理类
656642
*
@@ -800,10 +786,10 @@ class YukiHookPrefsBridge private constructor(private var context: Context? = nu
800786
* 提交更改 (同步)
801787
* @return [Boolean] 是否成功
802788
*/
803-
fun commit() = resetNativeSet { editor?.commit()?.also { makeWorldReadable() } ?: false }
789+
fun commit() = editor?.commit()?.also { makeWorldReadable() } ?: false
804790

805791
/** 提交更改 (异步) */
806-
fun apply() = resetNativeSet { editor?.apply().also { makeWorldReadable() } ?: Unit }
792+
fun apply() = editor?.apply().also { makeWorldReadable() } ?: Unit
807793

808794
/**
809795
* 仅在模块环境执行

0 commit comments

Comments
 (0)