在SCR运行时中首先调用哪一个激活函数或绑定函数

San*_*kla 5 osgi equinox knopflerfish apache-felix

我对组件变为活动时调用哪个函数Activate函数或绑定函数的顺序感到困惑.在我看来,首先会调用activate函数函数,因为Bind函数用于绑定服务.但是,正如我们所知,所有目标服务首先进入组件上下文,然后组件被激活.

请清除我的怀疑.

Nei*_*ett 8

在绑定了所有静态引用之后,即在调用绑定方法之后,将调用activate方法.因此,在激活期间,您可以确保静态引用的值不会更改.

但是对于动态参考,所有投注都是关闭的.事实上,执行activate方法期间,动态引用的值可能会在不同的线程中多次更改.

更新:您没有询问有关停用的信息,但您可能会发现此信息非常有用.在取消绑定任何静态引用之前,将调用deactivate方法.例如:如果你绑定了一个带有静态引用的服务,并且你必然要服务的服务消失,那么SCR将首先调用你的去激活,然后你的unbind方法,最后它将释放组件实例垃圾收集.