如果一个附加组件更改了它自己的首选项分支之外的首选项,那么它应该在卸载附加组件时将它们恢复到以前的状态(不一定是默认状态)。
我想,当前的首选项必须保存,然后在卸载时用于恢复。
运行AddonManager.addAddonListener()
似乎是一种选择(但要持续运行进程!)。还有别的选择吗?
在一个引导的附加组件,有一个function uninstall() {}
,但它是如何在一个覆盖的附加组件?
关于这个主题的其他有用的话题(但不能完全回答这个问题):
Firefox插件:卸载插件时如何删除首选项?
在用户分支中设置首选项,并在卸载时取消设置
通过连续运行流程,我的意思是为可能每年发生一次的事件运行侦听器/流程。我已经想到了另一种更有效的方法,但由于这是一个假设的情况,我没有任何东西可以测试它
使用AddonManager.addAddonListener()
是使用旧学校覆盖附加组件时的正确路径。
我不确定您所说的but running a process continuously!
侦听器只是添加到侦听器数组中,并且没有新进程运行。
不应该,您不应该连续运行进程,也不应该为您更改的任何首选项设置侦听器。没有理由这么做。对于您所描述的应用程序,您不需要知道首选项何时更改。您只需要知道首选项是什么:
- 更改前
- 你把它改成了
- 卸载时是什么
您不需要跟踪中间的更改。因此,没有监听器。
卸载时,如果首选项是您更改它的值,则将其更改回更改它之前的值。如果它是一些你没有设置的值,那么要么是用户,要么是另一个扩展,改变了它,你不应该把它改变回你安装扩展之前的值(也就是说,你不应该撤销用户已经设置的东西,或者通过另一个扩展设置)。
然而,如果你是一个覆盖扩展,你应该添加一个AddonListener与AddonManager,以检测何时你的插件已经(或将)被禁用/卸载。这样你就可以知道什么时候应该把首选项改回来。
自启动扩展有自己的卸载通知。
附加SDK扩展也有自己的方式。
最好阅读附录B:安装和卸载脚本。
这个问题有一些很好的信息:Firefox插件:如何在卸载插件时删除首选项?