У нас есть стандартный плагин Eclipse с обычными элементами GUI, и поскольку наши приложения не имеют одинаковой структуры, регистрация этих элементов выполняется в виде фрагмента, например:Запуск и остановка хост-модулей
<fragment>
<extension point="org.eclipse.ui.menus">
<menuContribution allPopups="false" locationURI="popup:org.acme.menu>
<command commandId="org.acme.command" style="push" />
</menuContribution>
</extension>
</fragment>
Теперь все работает должным образом. Проблема возникает при остановке подключаемого модуля хоста, поскольку, очевидно, фрагмент также не останавливается, рассматриваемое меню остается заполненным, страницы предпочтений остаются в диалоговом окне и т. Д.
I previously asked Если бы я мог просто начать и остановить фрагмент напрямую, но было подтверждено, что вы не должны (и на самом деле не можете) делать подобные вещи фрагментам.
Затем я начал устанавливать/удалять фрагмент, который приводит к некоторым bug in the PackageAdmin.
Насколько я могу судить, это справедливая игра, чтобы поместить регистрацию элементов GUI во фрагмент, и, насколько я понимаю, жизненный цикл фрагмента должен быть привязан к хосту, поэтому он не должен вносить вклад в GUI элементов, когда хост остановлен.
Может ли кто-нибудь указать, что я здесь делаю неправильно?
Очевидно, что точки расширения действительно нарушают каждое правило OSGi, поэтому они устарели и не должны использоваться вообще. Я не знал этого. –