2010-05-10 61 views
2

假设我的Firefox扩展有多个首选项,但其中一些已分组,如检查间隔,失败重试间隔,目标URL。这些仅用于单一功能。Firefox扩展dev:观察首选项,避免多个通知

当我订阅偏好服务并添加观察者时,将为每个更改的偏好调用observe回调,因此如果偶然用户更改了组中的所有设置,那么我将必须为相同的程序执行相同的程序子系统的次数与我的偏好组中的项目数量相同。这是一个伟大的冗余!

我想要的是observe只需调用一次即可。说

extensions.myextension.interval1 
extensions.myextension.site 
extensions.myextension.retry 

因此,如果这些偏好的一个或所有更改,我只收到1通知它。换句话说,无论在分支中改变了多少首选项,我都想让observe回调调用一次。

回答

0

当你在分支上注册一个pref观察者(在你的情况下,extensions.myextension)时,它会通知你每个首选项的改变。没有办法让它只告诉你一次关于分支变化的事情。当你的观察方法被调用时,你会得到更改的首选项的名称(这是第三个参数)。你将不得不根据这个过滤你的回调。

+0

那么如何在观察者中“过滤”以针对每组偏好运行特定的例程? – Pablo 2010-05-10 23:31:18

+0

您必须跟踪您已收到通知的次数,并且只运行您的代码一次以用于任何X通知,其中X是该pref分支上的首选项数量。 – sdwilsh 2010-05-11 17:23:56

+0

不是一个好的解决方案。希望能有更好的,原生框架结构 – Pablo 2010-05-13 09:40:38