Files
2026-06-03 15:49:48 +08:00

56 lines
1.6 KiB
JavaScript

/**
* CPU WakeLock 保活工具
* 申请 PARTIAL_WAKE_LOCK 保持CPU调度活跃
* 防止 Android 10 后台 Native→JS Bridge 回调被阻塞
*/
let wakeLock = null
export default {
/**
* 申请WakeLock(App启动/串口服务启动时调用)
*/
acquire() {
// #ifdef APP-PLUS
try {
if (wakeLock) return // 已持有
const main = plus.android.runtimeMainActivity()
const PowerManager = plus.android.importClass('android.os.PowerManager')
const pm = main.getSystemService('power')
// PARTIAL_WAKE_LOCK: 仅保持CPU运行,不亮屏、不锁键盘
wakeLock = pm.newWakeLock(
PowerManager.PARTIAL_WAKE_LOCK,
'endoscope:serial_service'
)
// 设置引用计数为false,避免多次acquire需对应次数release
plus.android.invoke(wakeLock, 'setReferenceCounted', false)
wakeLock.acquire()
console.log('[wakeLock] PARTIAL_WAKE_LOCK 已获取')
} catch (e) {
console.error('[wakeLock] 获取失败:', e)
}
// #endif
},
/**
* 释放WakeLock(串口服务完全停止时调用)
*/
release() {
// #ifdef APP-PLUS
try {
if (wakeLock) {
if (wakeLock.isHeld()) {
wakeLock.release()
console.log('[wakeLock] 已释放')
}
wakeLock = null
}
} catch (e) {
console.error('[wakeLock] 释放失败:', e)
}
// #endif
},
}