Установлен комплект. Теперь я хочу добавить к нему слушателя (а позже и начать), чтобы найти, когда дело доходит до активного состояния. Единственный способ, который я нашел, это

bundle.getBundleContext().addBundleListener(new ...);

Однако getBundleContext () работает только в том случае, если пакет находится в активном состоянии, при запуске, остановке. Итак, могу я это сделать?

0
user2022068 4 Май 2014 в 17:58

3 ответа

Лучший ответ

Нет смысла регистрировать BundleListener для отслеживания событий, которые происходят с одним и тем же пакетом. Когда вы реализуете BundleListener / BundleTracker, вы обычно хотите улавливать события пакетов со специальными атрибутами.

С помощью BundleListener вы можете отслеживать события, происходящие во фреймворке. С помощью BundleTracker вы сначала улавливаете последние события, которые произошли в каждом пакете в структуре, чем вы можете уловить новые события. Часто лучше использовать BundleTracker, поскольку вы хотите подбирать пакеты с теми специальными атрибутами, которые уже активны.

BundleListener / BundleTracker следует использовать с помощью BundleContext пакета, который реализует прослушиватель / трекер. Поскольку код не должен запускаться в вашем пакете до его «запуска», BundleContext должен быть всегда доступен, когда вы хотите зарегистрировать слушатель / трекер.

Было бы полезно узнать больше о сценарии использования, который вы хотите реализовать. Возможно, вам вообще не нужно реализовывать BundleListener / BundleTracker, просто немного измените дизайн кода в вашем пакете.

2
Balazs Zsoldos 4 Май 2014 в 17:53

Я бы предложил использовать BundleTracker для отслеживания и реагирования на изменения состояния пакета. Кроме того, вам нужно было использовать BundleContext для установки пакета. Таким образом, вы можете использовать свой BundleContext для создания BundleTracker.

1
BJ Hargrave 4 Май 2014 в 15:58

Вы хотите, чтобы пакет A знал, когда пакет B активируется, или вы хотите выполнить какой-то код, когда пакет B активируется? Во втором случае вам подойдет Bundle Activator ...

0
Tassos Bassoukos 5 Май 2014 в 07:11