<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, 評(píng)論 - 132, 引用 - 0
    數(shù)據(jù)加載中……

    【原創(chuàng)】Eclipse插件開(kāi)發(fā):用戶自定義插件會(huì)在Eclipse實(shí)例運(yùn)行期間被stop嗎?

            還記得剛接觸插件開(kāi)發(fā)不久的時(shí)候,加上看了點(diǎn)OSGI協(xié)議(其實(shí),當(dāng)時(shí)根本看不懂~_~),留下了如下的錯(cuò)覺(jué):
        1、我的插件在不用的時(shí)候會(huì)被自動(dòng)stop的。例如我的插件主要貢獻(xiàn)了一個(gè)自定義的編輯器,如果用戶把我提供的編輯器都關(guān)閉了,我的插件會(huì)馬上被自動(dòng)stop掉;用戶過(guò)會(huì)再打開(kāi)的時(shí)候,我的插件會(huì)再啟動(dòng)回來(lái)
        2、基于以上觀點(diǎn),我的資源釋放就放在我的Plugin.stop中,反正會(huì)馬上被釋放(不管eclipse實(shí)例--osgi framework--是否退出)
        3、...
        
            想想當(dāng)初,當(dāng)時(shí)是把OSGI協(xié)議中的bundle生命周期管理想象的過(guò)于神話了。可能是不想輕易放棄自己的觀點(diǎn),所以后來(lái)特意又仔細(xì)看了兩次OSGI協(xié)議,里面確實(shí)講了Bundle會(huì)被stop,而且如果stop的過(guò)程中發(fā)生異常,osgi framework會(huì)怎樣處理云云......但是,翻了幾遍也只發(fā)現(xiàn)了默認(rèn)兩種情況下Bunlde會(huì)被stop:
        1、OSGI framework退出的時(shí)候。映射到Eclipse插件開(kāi)發(fā)場(chǎng)景下,也就是說(shuō)當(dāng)Eclipse實(shí)例退出的時(shí)候,我們的Plugin肯定會(huì)被stop
        2、在支持osgi控制臺(tái)的協(xié)議實(shí)現(xiàn)中,用戶可以通過(guò)_stop來(lái)強(qiáng)制stop一個(gè)bundle。(這種情況,在Eclipse插件開(kāi)發(fā)的場(chǎng)景下,就不討論了)

            難道讓我自己去判斷我的插件是否被使用了,然后自己stop自己???

            看來(lái)有點(diǎn)心灰意冷了,自己想要的那種自己的Eclipse插件會(huì)在不用的時(shí)候馬上stop,用的時(shí)候再馬上start的效果(注明:在osgi framework即Eclipse實(shí)例一直運(yùn)行的情況下)是不存在的。于是,有點(diǎn)不相信協(xié)議了,就直接去翻了一下Eclipse對(duì)osgi的實(shí)現(xiàn)代碼,發(fā)現(xiàn)Bundle.stop被調(diào)用的地方非常少,總結(jié)一下基本上兩種情況:
            1、osgi framework在用,在framework退出的時(shí)候,stop掉俺的插件
            2、FrameworkCommandProvider在用,那不用說(shuō)了,就是osgi控制臺(tái)命令行在使用了

           Eclipse,難道你即時(shí)動(dòng)態(tài)地判斷一下俺的插件是否可以被stop就這么難嗎?
           確實(shí)很難,關(guān)于這個(gè)問(wèn)題過(guò)兩天閑下來(lái)會(huì)寫(xiě)個(gè)豆腐塊文章來(lái)大膽地揣測(cè)一下(這可能涉及到了osgi對(duì)狀態(tài)支持等...)

             說(shuō)到這邊,有人可能會(huì)問(wèn)了?為什么不在程序里面強(qiáng)制調(diào)用Bundle.stop來(lái)stop掉自己想stop的插件呢?
           關(guān)于這個(gè)問(wèn)題的原因也挺復(fù)雜的,插件的上下文環(huán)境、目標(biāo)插件所處的位置......總之,如果不是osgi那塊的高手,在做Eclipse插件開(kāi)發(fā)的過(guò)程中,最好不要這么做!!!


           現(xiàn)在,我們基本可以瞑目了,對(duì)一般Eclipse插件開(kāi)發(fā)者,請(qǐng)記住如下可能看起來(lái)不是太嚴(yán)謹(jǐn)?shù)慕Y(jié)論吧:
          的確,你的插件會(huì)被lazy start,但是一旦start了,就等到Eclipse實(shí)例退出的時(shí)候stop吧。

          再想想以前犯的錯(cuò)誤:把心想馬上釋放的資源直接丟到了Bundle.stop中。那知道,直到Eclipse實(shí)例退出的時(shí)候,它才被執(zhí)行啊....


    本博客中的所有文章、隨筆除了標(biāo)題中含有引用或者轉(zhuǎn)載字樣的,其他均為原創(chuàng)。轉(zhuǎn)載請(qǐng)注明出處,謝謝!

    posted on 2008-08-05 10:56 zhuxing 閱讀(1754) 評(píng)論(2)  編輯  收藏 所屬分類: Eclipse Plug-in & OSGI

    評(píng)論

    # re: 【原創(chuàng)】Eclipse插件開(kāi)發(fā):用戶自定義插件會(huì)在Eclipse實(shí)例運(yùn)行期間被stop嗎?  回復(fù)  更多評(píng)論   

    呵呵 看了你的文章 讓我感覺(jué) OSGI 不過(guò)又是某些人炒作的新概念 或者說(shuō) 尚未完善 這兩年好像計(jì)算機(jī)軟件技術(shù)發(fā)展遇到瓶頸了 能看到的都是炒作概念 把幾個(gè)老技術(shù)組合一下就開(kāi)始大吹

    概念總是很高深 開(kāi)發(fā)過(guò)程就是手工寫(xiě)啊寫(xiě)啊 寫(xiě)XML 這點(diǎn) 需要好好學(xué)習(xí)微軟的用戶友好技術(shù)
    2008-08-06 08:20 | BeanSoft

    # re: 【原創(chuàng)】Eclipse插件開(kāi)發(fā):用戶自定義插件會(huì)在Eclipse實(shí)例運(yùn)行期間被stop嗎?  回復(fù)  更多評(píng)論   

    @BeanSoft
    "OSGI 不過(guò)又是某些人炒作的新概念 或者說(shuō) 尚未完善"

    不能說(shuō)單純的炒作新概念了,畢竟是一種不錯(cuò)的組件化開(kāi)發(fā)理論

    尚未完善是真的。包括OSGI到底適應(yīng)于那些場(chǎng)景等等,現(xiàn)在也都是人云亦云
    2008-08-06 09:19 | zhuxing

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲一区二区三区夜色| 久久亚洲国产精品| 亚洲成网777777国产精品| 亚洲精品成人片在线播放| 亚洲人成网站日本片| 久久av免费天堂小草播放| 野花高清在线观看免费完整版中文| 亚洲熟伦熟女新五十路熟妇 | 亚洲熟妇av一区二区三区漫画 | 亚洲国产精品久久久久秋霞影院 | 国产yw855.c免费视频| 久久亚洲一区二区| 亚洲免费在线视频| 久久久久国产亚洲AV麻豆| 亚洲中文字幕无码久久2020| 久久午夜夜伦鲁鲁片无码免费| 亚洲Av无码乱码在线znlu| 一个人晚上在线观看的免费视频 | 99亚洲乱人伦aⅴ精品| 67194熟妇在线永久免费观看 | 国产亚洲精品高清在线| 99精品视频在线观看免费| 亚洲人成电影网站国产精品 | 亚洲av产在线精品亚洲第一站 | 亚洲日产乱码一二三区别 | 一级做a爰黑人又硬又粗免费看51社区国产精品视 | 国产国产人免费视频成69大陆| 亚洲剧场午夜在线观看| 一二三四在线播放免费观看中文版视频 | 又粗又黄又猛又爽大片免费| 亚洲乱妇老熟女爽到高潮的片| 午夜国产羞羞视频免费网站| 成人网站免费大全日韩国产| 亚洲黄片手机免费观看| 国产又黄又爽胸又大免费视频| 久久亚洲精品成人无码网站| 久9这里精品免费视频| 亚洲 日韩 色 图网站| 在线观看AV片永久免费| 无码日韩人妻AV一区免费l | 国产精品1024永久免费视频 |