bug修复: 修复executeJs锁无效导致的并发回调丢失

This commit is contained in:
fengge 2026-06-01 18:07:35 +08:00
parent c317d05e6e
commit 397e103596
1 changed files with 4 additions and 2 deletions

View File

@ -31,10 +31,12 @@ class MainActivity : AppCompatActivity() {
@Volatile
private var pendingJsCode: String? = null
private val jsLock = Any()
@JvmStatic
fun executeJs(script: String) {
Timber.tag("ExecuteJs").d(script)
synchronized(pendingJsCode ?: Any()) {
synchronized(jsLock) {
// 合并多次调用(用换行分隔)
pendingJsCode = if (pendingJsCode != null) "$pendingJsCode;$script" else script
}
@ -119,7 +121,7 @@ class MainActivity : AppCompatActivity() {
// 获取并清除待执行的 JS 代码(由 bridge.js 轮询)
@JvmStatic
fun pollPendingJs(): String {
synchronized(pendingJsCode ?: Any()) {
synchronized(jsLock) {
val code = pendingJsCode ?: ""
pendingJsCode = null
return code