Android版Firefox Nightly能否后台持续运行脚本?
解决Android Firefox Nightly后台Tampermonkey脚本停止运行的问题
一、Android系统层面设置
Android的电池优化和后台限制是导致脚本停止的核心原因,需调整以下设置:
- 关闭Firefox Nightly的电池优化:进入系统「设置」→「电池」→「电池优化」,找到Firefox Nightly,设置为「不优化」
- 锁定后台进程:在多任务界面长按Firefox Nightly图标,选择「锁定」(不同品牌操作有差异,如小米下拉加锁、华为点击锁形图标)
- 解除后台权限限制:部分品牌有专属后台管控(如OPPO「纯净后台」、vivo「后台高耗电」),需将Firefox Nightly加入允许后台运行的名单
二、Firefox Nightly浏览器设置
调整浏览器自身的后台休眠策略:
- 关闭后台标签暂停:打开Firefox Nightly→「设置」→「隐私和安全」,找到「后台标签暂停」选项并关闭
- 启用保持唤醒权限:在设置内搜索「保持唤醒」,开启「允许网站保持唤醒状态」(部分版本表述为「允许页面保持唤醒」)
- 关闭浏览器省电模式:若开启了Firefox的省电模式,会限制后台活动,需在设置内找到并关闭
三、Tampermonkey脚本优化
通过Web API申请系统唤醒锁,避免进程被休眠:
在脚本中添加唤醒锁申请逻辑,示例代码如下:
let wakeLock = null; // 申请屏幕唤醒锁 async function acquireWakeLock() { try { wakeLock = await navigator.wakeLock.request('screen'); // 唤醒锁被释放时10秒后重新申请 wakeLock.addEventListener('release', () => { setTimeout(acquireWakeLock, 10000); }); } catch (err) { console.error('唤醒锁申请失败:', err); } } // 页面加载时申请唤醒锁 window.addEventListener('load', acquireWakeLock); // 页面从后台回到前台时重新申请 document.addEventListener('visibilitychange', () => { if (!document.hidden && !wakeLock) { acquireWakeLock(); } });
- 避免依赖普通
setTimeout/setInterval,结合页面可见性API(document.hidden)判断,当页面不可见时,用短间隔小任务保持进程活跃
注意事项
- 部分定制Android系统(如MIUI、ColorOS)的后台管控较为激进,需额外在系统安全中心将Firefox Nightly加入「后台白名单」或「自启动名单」
- 持续后台运行会增加电池消耗,这是功能需求带来的必然权衡
内容的提问来源于stack exchange,提问作者JackStrong
相关产品推荐
相关产品推荐

