有没有办法手动卸载 chrome 扩展程序的后台脚本?

Is there a way to manually unload a background script for a chrome extension?

我正在开发一个 Chrome 扩展程序来跟踪您使用计算机的时间。我使用一个间隔递增,并使用 chrome.idle.queryState 检查计算机是否被锁定,如果它被锁定,我不会更改我的计数器。

有没有办法手动卸载后台页面,而不是不断检查间隔?或者后台脚本是否会自动卸载并重新加载,就像计算机休眠 X 分钟后一样?由于我有一个间隔,我想知道脚本是否会自行卸载。我做了类似的事情:

setInterval(function () {
    chrome.idle.queryState(15, function (state) {
        if (state !== "locked") {
            counter += 1;
            console.log(counter);
        }
    }
}, 6000);

感谢 wOxxOm 和 Nadia Chibrikova 回答问题。在卸载脚本时,最好使用非持久化的后台脚本,像这样:

...
"background": {
    "scripts": ["background.js"],
    "persistent": false
},
...

这将在 15-30 秒后卸载,无论任何间隔如何,只要没有打开的消息端口并且您不在 devtools 中检查它。为了我的目的,我保持一个消息端口打开,所以我使用一个变量来跟踪 Chrome 是否空闲或不使用 chrome.idle.onStateChanged,并相应地修改我的代码,如下:

chrome.idle.setDetectionInterval(15);
chrome.idle.onStateChanged.addListener(function (state) {
    if (state === "locked") {
        isLocked = true;
    } else {
        isLocked = false;
    }
});