Конструктор трекера службы является, например: ServiceTracker(BundleContext,Filter,ServiceTrackerCustomizer)
OSGi - ServiceTracker - ServiceTrackerCustomizer
где ServiceTrackerCustomizer реализует следующий интерфейс:
public interface ServiceTrackerCustomizer {
public Object addingService(ServiceReference reference);
public void modifiedService(ServiceReference reference, Object service);
public void removedService(ServiceReference reference, Object service);
}
Я понимаю, настройщик быть если вы хотите, например, добавить пользовательские действия, когда регистрируется отслеживаемая служба и т. д.
Но я изо всех сил пытаюсь понять, какова ссылка, которая передается в «addService», а также как возвращается объект, который возвращается.
Скажите, что вы хотите отслеживать сервис, ссылка на который является REF, и вы хотите распечатывать сообщение всякий раз, когда добавляется сервис. Настройщиком было бы что-то вроде:
public class MyServiceTrackerCustomizer implements ServiceTrackerCustomizer {
// Is REF the ref provided "behind the scene"?
public Object addingService(ServiceReference reference) {
// TODO Auto-generated method stub
System.out.println("In tracker customizer -> service added");
// What is the object returned?
return Object;
}
}
Заранее благодарим за любые разъяснения, которые вы можете предоставить. Christian
Благодарим Вас за отзыв. Я понял. Я также рассмотрел код реализации ServiceTracker и ожидал увидеть что-то вроде следующего в addService (в псевдокоде): «если ServiceCustomizer не имеет значения null при построении Tracker, используйте serviceCustomizer.addingService else context.getService (ссылка) «но нет ничего ... Я уверен, что здесь что-то не хватает ... – Christian68
Если аргумент customizer для конструктора ServiceTracker равен NULL, он использует себя как customizer, так как он также реализует ServiceTrackerCustomizer и таким образом стандартная реализация ServiceTrackerCustomizer. –