<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    精彩的人生

    好好工作,好好生活

    BlogJava 首頁 新隨筆 聯系 聚合 管理
      147 Posts :: 0 Stories :: 250 Comments :: 0 Trackbacks
    其實很多人都問到了這個問題。目前插件的安裝是需要重啟的,但是很多情況下是有不重啟而安裝插件的需求。我找到的一點資料,應該會有幫助



    FAQ How do I make my plug-in dynamic aware?

    From Eclipsepedia




    Dynamic awareness requires extra steps that were not required prior to the introduction of dynamic plug-ins. Dynamic awareness requires that you remove all references to classes defined in other plug-ins when those plug-ins are removed from the system. In particular, if your plug-in defines extension points that load classes from other plug-ins—executable extensions—you need to discard those references when other plug-ins are dynamically removed. The extension registry allows you to add a listener that notifies you when extensions are being added or removed from the system. If your plug-in maintains its own cache of extensions that are installed on your extension point, your listener should update this cache for each added or removed extension.



    The following is an example of a simple class that maintains its own cache of the set of extensions installed for a given extension point. This example is a bit contrived as simply caching the extension objects has no value. Typically, your plug-in will process the extensions to extract useful information and possibly load one or more classes associated with that extension. The basic structure of this cache example is as follows:

       public class ExtCache implements IRegistryChangeListener {
          private static final String PID = "my.plugin";
          private static final String PT_ID = 
             PID + "." + "extension.point";
          private final HashSet extensions = new HashSet();
          ...
       }
    

    The extensions field stores the set of installed extensions for a particular extension point.



    The cache has a startup method that loads the initial set of extensions and then adds an extension registry listener in order to be notified of future changes:

       public void startup() {
          IExtensionRegistry reg = Platform.getExtensionRegistry();
          IExtensionPoint pt = reg.getExtensionPoint(PT_ID);
          IExtension[] ext = pt.getExtensions();
          for (int i = 0; i < ext.length; i++)
             extensions.add(ext[i]);
          reg.addRegistryChangeListener(this);
       }
    

    The class implements the IRegistryChangeListener interface, which has a single method that is called whenever the registry changes:

       public void registryChanged(IRegistryChangeEvent event) {
          IExtensionDelta[] deltas = 
                              event.getExtensionDeltas(PID, PT_ID);
          for (int i = 0; i < deltas.length; i++) {
             if (deltas[i].getKind() == IExtensionDelta.ADDED)
                extensions.add(deltas[i].getExtension());
             else
                extensions.remove(deltas[i].getExtension());
          }
       }
    

    This class is now dynamic aware but is not yet dynamic enabled; that is, the class does not yet support itself being dynamically removed. The final step is to implement a shutdown method that clears all values from the cache and removes the listener from the extension registry:

       public void shutdown() {
          extensions.clear();
          IExtensionRegistry reg = Platform.getExtensionRegistry();
          reg.removeRegistryChangeListener(this);
       }
    

    This shutdown method must be called from the shutdown method of the plug-in that defines the cache. For the complete source code of this example, see the ExtCache class in the FAQ Examples plug-in.



    Note that not only extensions points acquire and maintain references to classes defined in other plug-ins. You need to be especially aware of static fields and caches that contain references to objects whose class is defined in other plug-ins.

    If you hold onto classes defined in other plug-ins through different mechanisms, you also need to discard those references when those other plug-ins are removed.


    原文地址:http://wiki.eclipse.org/index.php/FAQ_How_do_I_make_my_plug-in_dynamic_aware%3F

    posted on 2006-03-23 11:16 hopeshared 閱讀(2579) 評論(0)  編輯  收藏 所屬分類: Eclipse
    主站蜘蛛池模板: 中文字幕亚洲一区二区三区| 亚洲大香人伊一本线| 久草福利资源网站免费| 亚洲国产成人精品久久| 免费一级毛片不卡不收费| 一个人免费视频在线观看www| 亚洲一区在线视频观看| 亚洲精品国产电影| 1000部拍拍拍18免费网站| 羞羞视频免费网站含羞草| 亚洲一区二区中文| 国产精品久久香蕉免费播放| 日韩精品人妻系列无码专区免费 | 亚洲精品第一国产综合精品| 午夜免费福利网站| 无码囯产精品一区二区免费| 亚洲AV香蕉一区区二区三区| 亚洲国产精品无码久久一线 | 亚洲国产精品久久人人爱| 亚洲男人天堂2020| 成年人免费视频观看| 久9久9精品免费观看| 曰批全过程免费视频免费看| 亚洲噜噜噜噜噜影院在线播放| 久久伊人亚洲AV无码网站| 国内免费高清在线观看| 免费日本一区二区| 成年网站免费入口在线观看| 亚洲香蕉在线观看| 亚洲人成在线播放网站岛国| 亚洲精品无码99在线观看| 夭天干天天做天天免费看| 美女内射毛片在线看免费人动物| 一区二区免费在线观看| 亚洲风情亚Aⅴ在线发布| 亚洲第一页中文字幕| 久久精品亚洲一区二区| 久久亚洲高清综合| 无码欧精品亚洲日韩一区夜夜嗨| 好爽…又高潮了免费毛片| 四虎在线免费视频|