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

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

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

    Live a simple life

    沉默(zhu_xing@live.cn)
    隨筆 - 48, 文章 - 0, 評論 - 132, 引用 - 0
    數據加載中……

    【原創】編寫插件啟動類代碼時候的注意點!

            在Eclipse開發過程中,編寫插件啟動類(Activator)代碼時候的注意點,簡要列舉如下。
            眾所周知,org.eclipse.core.runtime.Plugin類中最核心的兩個方法:start和stop,開發者通過覆寫這兩個方法,可以參與到osgi framework針對你貢獻的Bundle的生命周期管理。注意點和簡要理由列舉如下:
           1、start方法中只干必須要干的事情。不是插件啟動的必要條件的東西,一律不要防止到start邏輯中。根據
                個人經驗,這種場景非常少,常用的功能是在AbstractUIPlugin啟動的時候申請系統資源。
                 【常犯的錯誤】
                  最近發現一些人寫start邏輯的時候,喜歡包含擴展加載的代碼(自己定義了一個擴展點,在插件啟動邏輯代碼中預加載擴展)。完全不必要這么做,第一操作Eclipse擴展注冊表本身是比較耗時的操作,而且如果加載的代碼邏輯中包含了創建類實例的代碼(IConfigurationElement.createExecutableExtension),很可能引起其他擴展插件的過早啟動
        
          2、start方法中的自定義邏輯代碼一定要確保安全。否則,可能一個簡單的異常情況就使得你辛苦寫的插件當掉了~_~,而且會間接引起對應擴展插件也啟動不了

         3、如果start方法中干了活有一定耗時的嫌疑,簡單的用時間戳測試一下大致的耗時
                  【常見的錯誤】
                  Eclipse底層在加載新類型的時候,會啟動一個新的線程,而且該線程設置的超時限制。Eclipse加載你貢獻的插件中的類型時,肯定要先啟動你的插件。如果你的啟動邏輯過于耗時,則有可能引起類加載超時的問題,最可惡的是,這種問題具有一定的偶然性

        4、建議保存Eclipse默認提供的Plugin Activator。發現有些人喜歡刪除默認的啟動類,他感覺他的插件不需要編寫額外的啟動邏輯代碼。個人建議不要這么做,因為很多底層問題需要調試到插件啟動的層面來判斷,保留默認啟動類,便于調試和跟蹤插件的啟動

        5、要假設stop方法只有在Eclipse實例退出的時候才被調用。關于這個問題的分析,最近兩天有時間我會額外寫一篇文章來分析一下(一般只有osgi framework在osgi應用退出的時候或者osgi console命令行管理中會調用這兩者,自己一般不要去調用)。
             【常犯的錯誤】
              不少開發者假設自己寫的插件真的會在不需要的時候被stop,這種想法過于天真。(首先如何判斷不被需要對osgi的實現者來說就是很大的挑戰,尤其是設計到有狀態服務等的時候....這個問題很復雜,以后有機會和大家討論)

        6、在starp和stop邏輯代碼中,盡量不要去顯式敢于Eclipse對插件生命周期的管理。這可能會引起很多莫名其妙的問題(請相信我,我曾經很多次用Bundle.start來啟動我想啟動的插件,結果出現見鬼的問題。以后和大家分享)。
            【常犯的錯誤】
              開發者顯示調用Bundle的start和stop來控制一個目標插件,千萬不要輕易這么干!!!如果想預啟動,盡量使用Eclipse提供的startup擴展點,其在app laucher中會幫你預啟動。


    其他的問題,一時想不起來了。希望對插件開發的同行有幫助!


    本博客中的所有文章、隨筆除了標題中含有引用或者轉載字樣的,其他均為原創。轉載請注明出處,謝謝!

    posted on 2008-08-04 18:10 zhuxing 閱讀(1593) 評論(0)  編輯  收藏 所屬分類: Eclipse Plug-in & OSGI

    主站蜘蛛池模板: 一本岛高清v不卡免费一三区| 一区二区三区免费视频观看| 亚洲最大黄色网站| 亚洲人6666成人观看| 亚洲国产成人无码AV在线影院| 亚洲国产欧美日韩精品一区二区三区| 亚洲成人免费网址| 四虎永久在线精品免费观看地址 | 国产精品亚洲专区无码不卡| 国产国产人免费人成成免视频| 最近高清中文字幕免费| 日韩精品视频免费在线观看| 亚洲精品你懂的在线观看| 亚洲在成人网在线看| 国产精品久久免费| 国产AV无码专区亚洲精品| 亚洲中文字幕无码爆乳| 中文字幕免费在线看线人动作大片 | 亚洲AV无码一区二区大桥未久 | 亚洲国产婷婷综合在线精品| 亚洲另类激情综合偷自拍| 亚洲中文精品久久久久久不卡| 女人被弄到高潮的免费视频| 国产亚洲精品自在久久| 久久久久免费精品国产| 哒哒哒免费视频观看在线www| 亚洲成人黄色在线观看| 天天天欲色欲色WWW免费| 一级特黄特色的免费大片视频| 亚洲av永久无码精品古装片 | 十九岁在线观看免费完整版电影| 爽爽日本在线视频免费| 国产成人精品日本亚洲专区6| 国产三级在线免费| 亚洲成AV人片久久| 免费萌白酱国产一区二区| 成全视频高清免费观看电视剧| 亚洲Av无码国产情品久久 | 亚洲日韩国产精品乱-久| 59pao成国产成视频永久免费| 亚洲AV成人影视在线观看|