本發(fā)明涉及計算機領(lǐng)域,尤其涉及一種啟動插件的方法及裝置。
背景技術(shù):
宿主程序是用于供插件運行的載體,同時也指定了插件的接入規(guī)范。插件是一種程序模塊,即是指符合服務平臺的接入規(guī)范,能夠運行于服務平臺的,并且非服務平臺本身所必須的功能或者業(yè)務模塊。
現(xiàn)有技術(shù)中,插件與宿主程序可以運行于不同的進程中,即插件可以運行于插件進程中,宿主程序可以運行于主進程中。為了避免在宿主程序啟動時,需要加載所有的插件而導致內(nèi)存占用較大,提出了一種啟動插件的方法:運行插件內(nèi)核管理器,將插件描述文件存儲的調(diào)用插件所需信息在所述插件內(nèi)核管理器內(nèi)進行注冊;調(diào)用插件時,根據(jù)所述插件在所述插件內(nèi)核管理器內(nèi)的注冊信息加載相關(guān)插件。
上述現(xiàn)有技術(shù)方案通過插件內(nèi)核管理器來管理插件的相關(guān)信息,只有在實際需要插件時才將插件加載到內(nèi)存中,這樣就減小了內(nèi)存的開銷,提高了計算機內(nèi)存的使用效率。但是,現(xiàn)有技術(shù)中在實際運行時,需要選擇待調(diào)用的插件,之后啟動該插件對應的插件進程,并在該插件進程啟動完畢之后,再加載該插件,存在插件啟動較慢的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明提供一種啟動插件的方法及裝置,用以解決現(xiàn)有技術(shù)中插件啟動較慢的問題。
本發(fā)明提供一種啟動插件的方法,包括:
主進程在確定需要調(diào)用插件進程對應的插件之前,啟動所述插件進程;
所述主進程在調(diào)用所述插件時,將所述插件加載到所述插件進程,以使所述插件進程運行所述插件。
在本發(fā)明一實施例中,所述主進程啟動所述插件進程,包括:
所述主進程的第一線程向所述插件進程對應的所述主進程的第二線程發(fā)送通知消息,所述通知消息用于指示啟動所述插件進程;
所述主進程的第二線程根據(jù)所述通知消息啟動所述插件進程。
在本發(fā)明一實施例中,所述通知消息為廣播消息;
所述主進程的第一線程向所述插件進程對應的所述主進程的第二線程發(fā)送通知消息,包括:
所述主進程的第一線程向多個線程發(fā)送所述廣播消息,所述多個線程分別與多個插件進程對應,所述多個線程包括所述第二線程。
在本發(fā)明一實施例中,所述主進程在調(diào)用所述插件時,將所述插件加載到所述插件進程之前,還包括:所述主進程根據(jù)用戶輸入,確定所述用戶選擇所述插件對應的插件入口,并根據(jù)所述插件入口確定調(diào)用所述插件。
在本發(fā)明一實施例中,所述主進程在調(diào)用所述插件時,將所述插件加載到所述插件進程,包括:
所述主進程在調(diào)用所述插件時,對所述插件進行初始化,并將所述插件加載到所述插件進程。
本發(fā)明提供一種啟動插件的裝置,所述裝置應用于主進程,所述裝置包括:
第一處理模塊,用于在確定需要調(diào)用插件進程對應的插件之前,啟動所述插件進程;
第二處理模塊,用于在調(diào)用所述插件時,將所述插件加載到所述插件進程,以使所述插件進程運行所述插件。
在本發(fā)明一實施例中,所述第一處理模塊包括第一線程處理模塊和第二線程處理模塊;其中,
所述第一線程處理模塊,用于向所述插件進程對應的所述第二線程處理模塊發(fā)送通知消息,所述通知消息用于指示啟動所述插件進程;
所述第二線程處理模塊,用于根據(jù)所述通知消息啟動所述插件進程。
在本發(fā)明一實施例中,所述通知消息為廣播消息;
所述第一線程處理模塊,具體用于:向多個線程處理模塊發(fā)送所述廣播消息,所述多個線程處理模塊分別與多個插件進程對應,所述多個線程處理 模塊包括所述第二線程處理模塊。
在本發(fā)明一實施例中,所述裝置還包括:第三處理模塊,用于根據(jù)用戶輸入,確定所述用戶選擇所述插件對應的插件入口,并根據(jù)所述插件入口確定調(diào)用所述插件。
在本發(fā)明一實施例中,所述第二處理模塊,具體用于在調(diào)用所述插件時,對所述插件進行初始化,并將所述插件加載到所述插件進程。
本發(fā)明提供一種啟動插件的方法及裝置;通過主進程在確定需要調(diào)用插件進程對應的插件之前,啟動所述插件進程;使得在主進程調(diào)用所述插件進程對應的插件時,不需要執(zhí)行啟動所述插件進程的操作;因此,減少了插件啟動的時間。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明啟動插件的方法實施例一的流程圖;
圖2為本發(fā)明啟動插件的方法實施例二的流程圖;
圖3為本發(fā)明啟動插件的裝置實施例一的結(jié)構(gòu)示意圖;
圖4為本發(fā)明啟動插件的裝置實施例二的結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
圖1為本發(fā)明啟動插件的方法實施例一的流程圖;如圖1所示,本實施例的方法可以包括:
步驟101、主進程在確定需要調(diào)用插件進程對應的插件之前,啟動所 述插件進程;
步驟102、所述主進程在調(diào)用所述插件時,將所述插件加載到所述插件進程,以使所述插件進程運行所述插件。
現(xiàn)有技術(shù)中,主進程在調(diào)用一插件進程對應的插件時,啟動該插件進程、將該插件加載到該插件進程,以使該插件運行在該插件進程中,從而完成該插件的啟動。本發(fā)明中,主進程在確定需要調(diào)用插件進程對應的插件之前,啟動所述插件進程;所述主進程在調(diào)用所述插件進程時,將所述插件加載到所述插件進程,以使所述插件進程運行所述插件。
現(xiàn)有技術(shù)中,由于主進程在調(diào)用一插件進程對應的插件時,才啟動該插件進程,并在啟動該插件進程之后才加載插件,從而完成插件的啟動;而啟動插件進程需要一定的時間,因此存在插件啟動較慢的問題。本發(fā)明中,通過主進程在確定需要調(diào)用插件進程對應的插件之前,啟動所述插件進程;使得在主進程調(diào)用所述插件進程對應的插件時,不需要執(zhí)行啟動所述插件進程的操作;因此,減少了插件啟動的時間。
圖2為本發(fā)明啟動插件的方法實施例二的流程圖;如圖2所示,本實施例的方法可以包括:
步驟201、主進程在確定需要調(diào)用插件進程對應的插件之前,啟動所述插件進程;
可選的,步驟201具體可以為:所述主進程的第一線程向所述插件進程對應的所述主進程的第二線程發(fā)送通知消息,所述通知消息用于指示啟動所述插件進程;
所述主進程的第二線程根據(jù)所述通知消息啟動所述插件進程。
可選的,所述通知消息可以為廣播消息;
相應的,所述主進程的第一線程向所述插件進程對應的所述主進程的第二線程發(fā)送通知消息,包括:
所述主進程的第一線程向多個線程發(fā)送所述廣播消息,所述多個線程分別與多個插件進程對應,所述多個線程包括所述第二線程。
其中,所述廣播消息的內(nèi)容可以為空,即僅通過所述廣播消息的消息頭進行指示。
可選的,所述主進程可以確定需要調(diào)用插件進程對應的插件之前的任何 時間點啟動所述插件進程;例如,可以在所述主進程初始化之后,立即啟動所述插件進程;或者,在所述主進程的初始化過程中啟動所述插件進行。
步驟202、所述主進程根據(jù)用戶輸入,確定需要進行跳轉(zhuǎn)處理;
需要說明的是,所述跳轉(zhuǎn)處理的可以由插件進程進行(也即,由主進程跳轉(zhuǎn)至插件進程),或者也可以由主進程進行(也即,在主進程內(nèi)進行跳轉(zhuǎn)處理)。
步驟203、所述主進程判斷所述跳轉(zhuǎn)處理是否由插件進程進行;
若是,則執(zhí)行步驟204;否則,執(zhí)行步驟206。
步驟204、所述主進程確定所述用戶選擇所述插件對應的插件入口,并根據(jù)所述插件入口確定調(diào)用所述插件;
進一步可選的,步驟201、步驟202或步驟203之前,還可以包括:所述主進程建立所述插件入口與所述插件的標識的對應關(guān)系。
可選的,所述插件可以與業(yè)務線一一對應;這里的所說的業(yè)務線可以根據(jù)應用場景進行劃分,例如可以為二手房交易業(yè)務線、購買商品業(yè)務線、發(fā)布招聘信息業(yè)務線等。
步驟205、所述主進程在調(diào)用所述插件時,對所述插件進行初始化,并將所述插件加載到所述插件進程;
可選的,所述插件具體可以為一個處理類;所述調(diào)用所述插件,具體可以為執(zhí)行所述處理類。
可選的,所述插件的功能可以為顯示對應業(yè)務線的界面。可選的,所述插件可以通過代理頁面完成業(yè)務線的真實頁面的展示。
需要說明的是,當所述插件加載到所述插件進程之后,所述插件進程可以運行所述插件,即完成所述主進行對所述插件的調(diào)用。
需要說明的是,步驟205執(zhí)行完后,不再執(zhí)行步驟206。
步驟206、所述主進程在所述主進程內(nèi)進行跳轉(zhuǎn)處理。
本實施例中,通過主進程在確定需要調(diào)用插件進程對應的插件之前,啟動所述插件進程;所述主進程根據(jù)用戶輸入,確定所述用戶選擇所述插件對應的插件入口,并根據(jù)所述插件入口確定調(diào)用所述插件;所述主進程在調(diào)用所述插件時,對所述插件進行初始化,并將所述插件加載到所述插件進程;使得在主進程調(diào)用所述插件進程對應的插件時,不需要執(zhí)行啟動所述插件進 程的操作;因此,減少了插件啟動的時間。同時,通過主進程在調(diào)用所述插件時,對所述插件進行初始化,與在應用程序啟動開始對插件的初始化相比,減少了應用程序的啟動時間。
圖3為本發(fā)明啟動插件的裝置實施例一的結(jié)構(gòu)示意圖;本實施例的裝置可以應用于主進程,如圖3所示,本實施例的裝置可以包括:第一處理模塊301和第二處理模塊302。其中,第一處理模塊301,用于在確定需要調(diào)用插件進程對應的插件之前,啟動所述插件進程;第二處理模塊302,用于在調(diào)用所述插件時,將所述插件加載到所述插件進程,以使所述插件進程運行所述插件。
本實施例的裝置,可以用于執(zhí)行圖1所示方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
圖4為本發(fā)明啟動插件的裝置實施例二的結(jié)構(gòu)示意圖;本實施例的裝置在圖3所示裝置結(jié)構(gòu)的基礎(chǔ)上,進一步的,第一處理模塊301可以包括:第一線程處理模塊3011和第二線程處理模塊3012。其中,第一線程處理模塊3011,用于向所述插件進程對應的第二線程處理模塊3012發(fā)送通知消息,所述通知消息用于指示啟動所述插件進程;第二線程處理模塊3012,用于根據(jù)所述通知消息啟動所述插件進程。
可選的,所述通知消息為廣播消息;
第一線程處理模塊3011,具體用于:向多個線程處理模塊發(fā)送所述廣播消息,所述多個線程處理模塊分別與多個插件進程對應,所述多個線程處理模塊包括第二線程處理模塊3012。
可選的,本實施例的裝置還包括:第三處理模塊303,用于根據(jù)用戶輸入,確定所述用戶選擇所述插件對應的插件入口,并根據(jù)所述插件入口確定調(diào)用所述插件。
可選的,第二處理模塊302,具體用于在調(diào)用所述插件時,對所述插件進行初始化,并將所述插件加載到所述插件進程。
本實施例的裝置,可以用于執(zhí)行圖2所示方法實施例的技術(shù)方案,其實現(xiàn)原理和技術(shù)效果類似,此處不再贅述。
本領(lǐng)域普通技術(shù)人員可以理解:實現(xiàn)上述各方法實施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成。前述的程序可以存儲于一計算機可 讀取存儲介質(zhì)中。該程序在執(zhí)行時,執(zhí)行包括上述各方法實施例的步驟;而前述的存儲介質(zhì)包括:ROM、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
最后應說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細的說明,本領(lǐng)域的普通技術(shù)人員應當理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。