Chrome扩展程序如何获得关闭后台脚本的通知?

时间:2014-09-09 20:43:46

标签: javascript google-chrome google-chrome-extension

让我解释一下。我的Google Chrome扩展程序会将其状态保存在chrome.storage.local永久存储中。数据量可能相当大(在JSON布局中高达几MB),因此每次发生更改时我都不会调用chrome.storage.local.set()来最小化我的扩展对其运行的系统的影响。相反,我在后台执行定时器保存,目前每隔30秒。

此后台保存过程发生在后台脚本中,只要我的扩展程序正在运行,它就会保留在内存中。 (我在"background": {"persistent": true}文件中设置了manifest.json。)

当我的扩展程序被重新安装或卸载时会出现问题,因为在这30秒保存之间的某些状态会丢失。

所以我想知道我是否有办法跟踪背景脚本即将关闭的时刻? (这样我就可以保存我应用的状态了。)

1 个答案:

答案 0 :(得分:1)

您可以使用chrome.runtime.onUpdateAvailable event的监听器拦截更新:

  

在更新可用时触发,但由于应用当前正在运行,因此未立即安装。如果您不执行任何操作,则下次卸载后台页面时将安装更新,如果您希望尽快安装它,则可以更快地安装chrome.runtime.reload()。如果您的扩展程序使用的是持久性后台页面,那么后台页面当然永远不会被卸载,因此除非您手动调用chrome.runtime.reload()以响应此事件,否则直到下次chrome本身重新启动时才会安装更新。如果没有处理程序正在侦听此事件,并且您的扩展程序具有持久性后台页面,则其行为就像调用chrome.runtime.reload()以响应此事件一样。

关于卸载..如果您的意思是被用户禁用,可能无法进行清理,但请不要引用我。

即使您使用永久性页面,甚至window.onunload,您也可以尝试收听chrome.runtime.onSuspend。我不知道,只是抛出想法。在任何一种情况下,您的清理时间都非常有限。

如果要在浏览器关闭时进行清理,可以尝试使用"background"权限进行播放并监听正在创建和关闭的窗口。这样,您可以将生命周期延长到浏览器关闭之外,除非用户明确禁用后台应用程序。