/** * 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 }, }