亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

組件系統及組件交互方法與流程

文檔序號:11582386閱讀:332來源:國知局
組件系統及組件交互方法與流程

本發(fā)明涉及電子技術,尤其涉及一種組件系統及組件交互方法。



背景技術:

在電子設備,例如,智能移動終端,上運行著各種的應用,功能及界面極其豐富;但是功能的豐富及界面的豐富,是以大量的可以實現特定功能的組件之間的相互調用實現。在現有技術中,任意兩個組件是可以直接相互調用,這就導致了組件的緊耦合,這樣組件在開發(fā)的過程中,會存在模塊化開發(fā)的難度大,導致開發(fā)效率低的問題。在使用的過程中,若一個組件應用另一個組件在完成對應的功能之后,沒有關閉;則被其應用的另一個組件也不能關閉,導致這些組件都處于沒有任務的狀態(tài)下,卻依然占用著大量的內存,進而導致內存被霸占、內存得不到有效使用的內存泄露現象。



技術實現要素:

有鑒于此,本發(fā)明實施例為解決現有技術中存在的至少一個問題而提供一種組件系統及組件交互方法。

本發(fā)明實施例的技術方案是這樣實現的:

本發(fā)明實施例提供了一種組件系統,包括至少兩個組件以及分別與所述組件連接的事件總線;

所述事件總線,用于接收所述組件的事件注冊的注冊請求,根據所述注冊請求,關聯事件與組件形成關聯關系;接收事件推送的推送消息,根據所述關聯關系,將所述推送信息發(fā)送給對應的組件。

基于上述方案,所述事件總線包括:

總線模塊,用于接收所述注冊請求及發(fā)送所述推送消息;

管理模塊,用于根據所述注冊請求,形成所述關聯關系,檢索所述關聯關系,確定接收所述推送信息的組件。

基于上述方案,所述管理模塊,還用于對所述事件進行分類,建立每個類型事件與一個或多個組件之間的關聯關系。

基于上述方案,所述事件總線,還用于接收第一組件調用預定事件的調用消息,根據所述調用消息觸發(fā)所述預定事件對應的第二組件執(zhí)行對應操作,并接收所述第二組件執(zhí)行對應操作之后返回的第一類推送消息,根據所述預定事件,將所述第一類推送消息發(fā)送給所述第一組件。

基于上述方案,所述事件總線,還用于監(jiān)聽事件執(zhí)行的執(zhí)行狀況,根據所述執(zhí)行狀況向對對應組件發(fā)送執(zhí)行狀態(tài)消息;其中,所述執(zhí)行狀態(tài)消息用于對應組件確定是否釋放內存。

本發(fā)明實施例第二方面提供一種組件交互方法,應用于事件總線中,包括:

接收組件發(fā)送的事件的注冊請求;

根據所述注冊請求,關聯事件與組件形成關聯關系;

接收事件推送的推送消息;

根據所述關聯關系,將所述推送信息發(fā)送給對應的組件。

基于上述方案,所述根據所述注冊請求,關聯事件與組件形成關聯關系,包括:

對所述事件進行分類,建立每個類型事件與一個或多個組件之間的關聯關系。

基于上述方案,所述方法還包括:

接收第一組件調用預定事件的調用消息;

根據所述調用消息觸發(fā)所述預定事件對應的第二組件執(zhí)行對應操作,并接收所述第二組件執(zhí)行對應操作之后返回的第一類推送消息;

根據所述預定事件,將所述第一類推送消息發(fā)送給所述第一組件。

基于上述方案,所述調用消息包括調用參數;其中,所述調用參數用于所述第二組件執(zhí)行所述對應操作的輸入參數。

基于上述方案,所述方法還包括:

監(jiān)聽事件執(zhí)行的執(zhí)行狀況;

根據所述執(zhí)行狀況向對對應組件發(fā)送執(zhí)行狀態(tài)消息;其中,所述執(zhí)行狀態(tài)消息用于對應組件確定是否釋放內存。

本發(fā)明實施例中,在兩個組件之間引入了事件總線,由事件總線協助組件完成信息交互,接觸了組件之間的緊耦合,從而也解決了緊耦合導致的開發(fā)、設計及維護難度大的問題。與此同時,由于事件總線的引入,組件之間的沒有直接的相互引用或調用關系,組件可以根據自己的運行狀態(tài),確定過是否釋放內存,減少了被其他不需要組件引用其組件的引用導致的內存不能釋放的問題,從而減少了內存泄露現象。

附圖說明

圖1為實現本發(fā)明實施例一個移動終端的結構示意圖;

圖2為如圖1所示的移動終端的無線通信系統示意圖;

圖3為本發(fā)明實施例提供的第一種組件系統的結構示意圖;

圖4為本發(fā)明實施例提供的第二種組件系統的結構示意圖;

圖5為本發(fā)明實施例提供的一種組件交互方法的流程示意圖;

圖6為本發(fā)明實施例提供的第三種組件系統的結構示意圖。

具體實施方式

應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明的技術方案,并不用于限定本發(fā)明的保護范圍。

現在將參考附圖描述實現本發(fā)明各個實施例的移動終端。在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說明,其本身并沒有特定的意義。因此,“模塊”與“部件”可以混合地使用。

移動終端可以以各種形式來實施。例如,本發(fā)明中描述的終端可以包括諸如移動電話、智能電話、筆記本電腦、數字廣播接收器、個人數字助理(pda)、平板電腦(pad)、便攜式多媒體播放器(pmp)、導航裝置等等的移動終端以及諸如數字tv、臺式計算機等等的固定終端。下面,假設終端是移動終端。然而,本領域技術人員將理解的是,除了特別用于移動目的的元件之外,根據本發(fā)明的實施方式的構造也能夠應用于固定類型的終端。

圖1為實現本發(fā)明各個實施例的移動終端100的硬件結構示意,如圖1所示,移動終端100可以包括無線通信單元110、音頻/視頻(a/v)輸入單元120、用戶輸入單元130、感測單元140、輸出單元150、存儲器160、接口單元170、控制器180和電源單元190等等。圖1示出了具有各種組件的移動終端100,但是應理解的是,并不要求實施所有示出的組件??梢蕴娲貙嵤└嗷蚋俚慕M件。將在下面詳細描述移動終端100的元件。

無線通信單元110通常包括一個或多個組件,其允許移動終端100與無線通信系統或網絡之間的無線電通信。例如,無線通信單元110可以包括廣播接收模塊111、移動通信模塊112、無線互聯網模塊113、短程通信模塊114和位置信息模塊115中的至少一個。

廣播接收模塊111經由廣播信道從外部廣播管理服務器接收廣播信號和/或廣播相關信息。廣播信道可以包括衛(wèi)星信道和/或地面信道。廣播管理服務器可以是生成并發(fā)送廣播信號和/或廣播相關信息的服務器或者接收之前生成的廣播信號和/或廣播相關信息并且將其發(fā)送給終端的服務器。廣播信號可以包括tv廣播信號、無線電廣播信號、數據廣播信號等等。而且,廣播信號可以進一步包括與tv或無線電廣播信號組合的廣播信號。廣播相關信息也可以經由移動通信網絡提供,并且在該情況下,廣播相關信息可以由移動通信模塊112來接收。廣播信號可以以各種形式存在,例如,其可以以數字多媒體廣播(dmb)的電子節(jié)目指南(epg)、數字視頻廣播手持(dvb-h)的電子服務指南(esg)等等的形式而存在。廣播接收模塊111可以通過使用各種類型的廣播系統接收信號廣播。特別地,廣播接收模塊111可以通過使用諸如多媒體廣播-地面(dmb-t)、數字多媒體廣播-衛(wèi)星(dmb-s)、數字視頻廣播-手持(dvb-h),前向鏈路媒體(mediaflo@)的數據廣播系統、地面數字廣播綜合服務(isdb-t)等等的數字廣播系統接收數字廣播。廣播接收模塊111可以被構造為適合提供廣播信號的各種廣播系統以及上述數字廣播系統。經由廣播接收模塊111接收的廣播信號和/或廣播相關信息可以存儲在存儲器160(或者其它類型的存儲介質)中。

移動通信模塊112將無線電信號發(fā)送到基站(例如,接入點、節(jié)點b等等)、外部終端以及服務器中的至少一個和/或從其接收無線電信號。這樣的無線電信號可以包括語音通話信號、視頻通話信號、或者根據文本和/或多媒體消息發(fā)送和/或接收的各種類型的數據。

無線互聯網模塊113支持移動終端100的無線互聯網接入。無線互聯網模塊113可以內部或外部地耦接到終端。無線互聯網模塊113所涉及的無線互聯網接入技術可以包括無線局域網(wlan)、無線相容性認證(wi-fi)、無線寬帶(wibro)、全球微波互聯接入(wimax)、高速下行鏈路分組接入(hsdpa)等等。

短程通信模塊114是用于支持短程通信的模塊。短程通信技術的一些示例包括藍牙tm、射頻識別(rfid)、紅外數據協會(irda)、超寬帶(uwb)、紫蜂tm等等。

位置信息模塊115是用于檢查或獲取移動終端100的位置信息的模塊。位置信息模塊115的典型示例是全球定位系統(gps)模塊115。根據當前的技術,gps模塊115計算來自三個或更多衛(wèi)星的距離信息和準確的時間信息并且對于計算的信息應用三角測量法,從而根據經度、緯度和高度準確地計算三維當前位置信息。當前,用于計算位置和時間信息的方法使用三顆衛(wèi)星并且通過使用另外的一顆衛(wèi)星校正計算出的位置和時間信息的誤差。此外,gps模塊115能夠通過實時地連續(xù)計算當前位置信息來計算速度信息。

a/v輸入單元120用于接收音頻或視頻信號。a/v輸入單元120可以包括相機121和麥克風122,相機121對在視頻捕獲模式或圖像捕獲模式中由圖像捕獲裝置獲得的靜態(tài)圖片或視頻的圖像數據進行處理。處理后的圖像幀可以顯示在顯示單元151上。經相機121處理后的圖像幀可以存儲在存儲器160(或其它存儲介質)中或者經由無線通信單元110進行發(fā)送,可以根據移動終端100的構造提供兩個或更多相機121。麥克風122可以在電話通話模式、記錄模式、語音識別模式等等運行模式中經由麥克風接收聲音(音頻數據),并且能夠將這樣的聲音處理為音頻數據。處理后的音頻(語音)數據可以在電話通話模式的情況下轉換為可經由移動通信模塊112發(fā)送到移動通信基站的格式輸出。麥克風122可以實施各種類型的噪聲消除(或抑制)算法以消除(或抑制)在接收和發(fā)送音頻信號的過程中產生的噪聲或者干擾。

用戶輸入單元130可以根據用戶輸入的命令生成鍵輸入數據以控制移動終端100的各種操作。用戶輸入單元130允許用戶輸入各種類型的信息,并且可以包括鍵盤、鍋仔片、觸摸板(例如,檢測由于被接觸而導致的電阻、壓力、電容等等的變化的觸敏組件)、滾輪、搖桿等等。特別地,當觸摸板以層的形式疊加在顯示單元151上時,可以形成觸摸屏。

感測單元140檢測移動終端100的當前狀態(tài),(例如,移動終端100的打開或關閉狀態(tài))、移動終端100的位置、用戶對于移動終端100的接觸(即,觸摸輸入)的有無、移動終端100的取向、移動終端100的加速或減速移動和方向等等,并且生成用于控制移動終端100的操作的命令或信號。例如,當移動終端100實施為滑動型移動電話時,感測單元140可以感測該滑動型電話是打開還是關閉。另外,感測單元140能夠檢測電源單元190是否提供電力或者接口單元170是否與外部裝置耦接。

接口單元170用作至少一個外部裝置與移動終端100連接可以通過的接口。例如,外部裝置可以包括有線或無線頭戴式耳機端口、外部電源(或電池充電器)端口、有線或無線數據端口、存儲卡端口(典型示例是通用串行總線usb端口)、用于連接具有識別模塊的裝置的端口、音頻輸入/輸出(i/o)端口、視頻i/o端口、耳機端口等等。識別模塊可以是存儲用于驗證用戶使用移動終端100的各種信息并且可以包括用戶識別模塊(uim)、客戶識別模塊(sim)、通用客戶識別模塊(usim)等等。另外,具有識別模塊的裝置(下面稱為“識別裝置”)可以采取智能卡的形式,因此,識別裝置可以經由端口或其它連接裝置與移動終端100連接。

接口單元170可以用于接收來自外部裝置的輸入(例如,數據信息、電力等等)并且將接收到的輸入傳輸到移動終端100內的一個或多個元件或者可以用于在移動終端100和外部裝置之間傳輸數據。

另外,當移動終端100與外部底座連接時,接口單元170可以用作允許通過其將電力從底座提供到移動終端100的路徑或者可以用作允許從底座輸入的各種命令信號通過其傳輸到移動終端100的路徑。從底座輸入的各種命令信號或電力可以用作用于識別移動終端100是否準確地安裝在底座上的信號。

輸出單元150被構造為以視覺、音頻和/或觸覺方式提供輸出信號(例如,音頻信號、視頻信號、警報信號、振動信號等等)。輸出單元150可以包括顯示單元151、音頻輸出模塊152、警報單元153等等。

顯示單元151可以顯示在移動終端100中處理的信息。例如,當移動終端100處于電話通話模式時,顯示單元151可以顯示與通話或其它通信(例如,文本消息收發(fā)、多媒體文件下載等等)相關的用戶界面(ui)或圖形用戶界面(gui)。當移動終端100處于視頻通話模式或者圖像捕獲模式時,顯示單元151可以顯示捕獲的圖像和/或接收的圖像、示出視頻或圖像以及相關功能的ui或gui等等。

同時,當顯示單元151和觸摸板以層的形式彼此疊加以形成觸摸屏時,顯示單元151可以用作輸入裝置和輸出裝置。顯示單元151可以包括液晶顯示器(lcd)、薄膜晶體管lcd(tft-lcd)、有機發(fā)光二極管(oled)顯示器、柔性顯示器、三維(3d)顯示器等等中的至少一種。這些顯示器中的一些可以被構造為透明狀以允許用戶從外部觀看,這可以稱為透明顯示器,典型的透明顯示器可以例如為toled(透明有機發(fā)光二極管)顯示器等等。根據特定想要的實施方式,移動終端100可以包括兩個或更多顯示單元(或其它顯示裝置),例如,移動終端100可以包括外部顯示單元(未示出)和內部顯示單元(未示出)。觸摸屏可用于檢測觸摸輸入壓力以及觸摸輸入位置和觸摸輸入面積。

音頻輸出模塊152可以在移動終端100處于呼叫信號接收模式、通話模式、記錄模式、語音識別模式、廣播接收模式等等模式下時,將無線通信單元110接收的或者在存儲器160中存儲的音頻數據轉換音頻信號并且輸出為聲音。而且,音頻輸出模塊152可以提供與移動終端100執(zhí)行的特定功能相關的音頻輸出(例如,呼叫信號接收聲音、消息接收聲音等等)。音頻輸出模塊152可以包括揚聲器、蜂鳴器等等。

警報單元153可以提供輸出以將事件的發(fā)生通知給移動終端100。典型的事件可以包括呼叫接收、消息接收、鍵信號輸入、觸摸輸入等等。除了音頻或視頻輸出之外,警報單元153可以以不同的方式提供輸出以通知事件的發(fā)生。例如,警報單元153可以以振動的形式提供輸出,當接收到呼叫、消息或一些其它進入通信(incomingcommunication)時,警報單元153可以提供觸覺輸出(即,振動)以將其通知給用戶。通過提供這樣的觸覺輸出,即使在用戶的移動電話處于用戶的口袋中時,用戶也能夠識別出各種事件的發(fā)生。警報單元153也可以經由顯示單元151或音頻輸出模塊152提供通知事件的發(fā)生的輸出。

存儲器160可以存儲由控制器180執(zhí)行的處理和控制操作的軟件程序等等,或者可以暫時地存儲已經輸出或將要輸出的數據(例如,電話簿、消息、靜態(tài)圖像、視頻等等)。而且,存儲器160可以存儲關于當觸摸施加到觸摸屏時輸出的各種方式的振動和音頻信號的數據。

存儲器160可以包括至少一種類型的存儲介質,所述存儲介質包括閃存、硬盤、多媒體卡、卡型存儲器(例如,sd或dx存儲器等等)、隨機訪問存儲器(ram)、靜態(tài)隨機訪問存儲器(sram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、可編程只讀存儲器(prom)、磁性存儲器、磁盤、光盤等等。而且,移動終端100可以與通過網絡連接執(zhí)行存儲器160的存儲功能的網絡存儲裝置協作。

控制器180通常控制移動終端100的總體操作。例如,控制器180執(zhí)行與語音通話、數據通信、視頻通話等等相關的控制和處理。另外,控制器180可以包括用于再現或回放多媒體數據的多媒體模塊181,多媒體模塊181可以構造在控制器180內,或者可以構造為與控制器180分離。控制器180可以執(zhí)行模式識別處理,以將在觸摸屏上執(zhí)行的手寫輸入或者圖片繪制輸入識別為字符或圖像。

電源單元190在控制器180的控制下接收外部電力或內部電力并且提供操作各元件和組件所需的適當的電力。

這里描述的各種實施方式可以以使用例如計算機軟件、硬件或其任何組合的計算機可讀介質來實施。對于硬件實施,這里描述的實施方式可以通過使用特定用途集成電路(asic)、數字信號處理器(dsp)、數字信號處理裝置(dspd)、可編程邏輯裝置(pld)、現場可編程門陣列(fpga)、處理器、控制器、微控制器、微處理器、被設計為執(zhí)行這里描述的功能的電子單元中的至少一種來實施,在一些情況下,這樣的實施方式可以在控制器180中實施。對于軟件實施,諸如過程或功能的實施方式可以與允許執(zhí)行至少一種功能或操作的單獨的軟件模塊來實施。軟件代碼可以由以任何適當的編程語言編寫的軟件應用程序(或程序)來實施,軟件代碼可以存儲在存儲器160中并且由控制器180執(zhí)行。

至此,已經按照其功能描述了移動終端100。下面,為了簡要起見,將描述諸如折疊型、直板型、擺動型、滑動型移動終端100等等的各種類型的移動終端100中的滑動型移動終端100作為示例。因此,本發(fā)明能夠應用于任何類型的移動終端100,并且不限于滑動型移動終端100。

如圖1中所示的移動終端100可以被構造為利用經由幀或分組發(fā)送數據的諸如有線和無線通信系統以及基于衛(wèi)星的通信系統來操作。

現在將參考圖2描述其中根據本發(fā)明的移動終端100能夠操作的通信系統。

這樣的通信系統可以使用不同的空中接口和/或物理層。例如,由通信系統使用的空中接口包括例如頻分多址(fdma)、時分多址(tdma)、碼分多址(cdma)和通用移動通信系統(umts)(特別地,長期演進(lte))、全球移動通信系統(gsm)等等。作為非限制性示例,下面的描述涉及cdma通信系統,但是這樣的教導同樣適用于其它類型的系統。

參考圖2,cdma無線通信系統可以包括多個移動終端100、多個基站(bs)270、基站控制器(bsc)275和移動交換中心(msc)280。msc280被構造為與公共電話交換網絡(pstn)290形成接口。msc280還被構造為與可以經由回程線路耦接到基站270的bsc275形成接口。回程線路可以根據若干己知的接口中的任一種來構造,所述接口包括例如e1/t1、atm、ip、ppp、幀中繼、hdsl、adsl或xdsl。將理解的是,如圖2中所示的系統可以包括多個bsc2750。

每個bs270可以服務一個或多個分區(qū)(或區(qū)域),由多向天線或指向特定方向的天線覆蓋的每個分區(qū)放射狀地遠離bs270?;蛘?,每個分區(qū)可以由用于分集接收的兩個或更多天線覆蓋。每個bs270可以被構造為支持多個頻率分配,并且每個頻率分配具有特定頻譜(例如,1.25mhz,5mhz等等)。

分區(qū)與頻率分配的交叉可以被稱為cdma信道。bs270也可以被稱為基站收發(fā)器子系統(bts)或者其它等效術語。在這樣的情況下,術語“基站”可以用于籠統地表示單個bsc275和至少一個bs270。基站也可以被稱為“蜂窩站”?;蛘?,特定bs270的各分區(qū)可以被稱為多個蜂窩站。

如圖2中所示,廣播發(fā)射器(bt)295將廣播信號發(fā)送給在系統內操作的移動終端100。如圖1中所示的廣播接收模塊111被設置在移動終端100處以接收由bt295發(fā)送的廣播信號。在圖2中,示出了幾個衛(wèi)星300,例如可以采用全球定位系統(gps)衛(wèi)星300。衛(wèi)星300幫助定位多個移動終端100中的至少一個。

在圖2中,描繪了多個衛(wèi)星300,但是理解的是,可以利用任何數目的衛(wèi)星獲得有用的定位信息。如圖1中所示的gps模塊115通常被構造為與衛(wèi)星300配合以獲得想要的定位信息。替代gps跟蹤技術或者在gps跟蹤技術之外,可以使用可以跟蹤移動終端100的位置的其它技術。另外,至少一個gps衛(wèi)星300可以選擇性地或者額外地處理衛(wèi)星dmb傳輸。

作為無線通信系統的一個典型操作,bs270接收來自各種移動終端100的反向鏈路信號。移動終端100通常參與通話、消息收發(fā)和其它類型的通信。特定基站270接收的每個反向鏈路信號被在特定bs270內進行處理。獲得的數據被轉發(fā)給相關的bsc275。bsc提供通話資源分配和包括bs270之間的軟切換過程的協調的移動管理功能。bsc275還將接收到的數據路由到msc280,其提供用于與pstn290形成接口的額外的路由服務。類似地,pstn290與msc280形成接口,msc與bsc275形成接口,并且bsc275相應地控制bs270以將正向鏈路信號發(fā)送到移動終端100。

移動終端中無線通信單元110的移動通信模塊112基于移動終端內置的接入移動通信網絡(如2g/3g/4g等移動通信網絡)的必要數據(包括用戶識別信息和鑒權信息)接入移動通信網絡為移動終端用戶的網頁瀏覽、網絡多媒體播放等業(yè)務傳輸移動通信數據(包括上行的移動通信數據和下行的移動通信數據)。

無線通信單元110的無線互聯網模塊113通過運行無線熱點的相關協議功能而實現無線熱點的功能,無線熱點支持多個移動終端(移動終端之外的任意移動終端)接入,通過復用移動通信模塊112與移動通信網絡之間的移動通信連接為移動終端用戶的網頁瀏覽、網絡多媒體播放等業(yè)務傳輸移動通信數據(包括上行的移動通信數據和下行的移動通信數據),由于移動終端實質上是復用移動終端與通信網絡之間的移動通信連接傳輸移動通信數據的,因此移動終端消耗的移動通信數據的流量由通信網絡側的計費實體計入移動終端的通信資費,從而消耗移動終端簽約使用的通信資費中包括的移動通信數據的數據流量。

如圖3所示,本發(fā)明實施例提供一種組件系統,,包括至少兩個組件310以及分別與所述組件310連接的事件總線320;

所述事件總線320,用于接收所述組件的事件注冊的注冊請求,根據所述注冊請求,關聯事件與組件形成關聯關系;接收事件推送的推送消息,根據所述關聯關系,將所述推送信息發(fā)送給對應的組件。

至少兩個組件包括組件a、組件b及組件c。

例如,組件a會想要獲得組件b的狀態(tài)信息,根據組件b的狀態(tài)信息執(zhí)行對應的狀態(tài)。在本實施例中所述組件a會向事件總線320發(fā)送注冊請求。所述注冊請求中可包括事件屬性。這里的事件屬性可包括組件標識以及關注參數等。所述組件標識可為組件a關注的組件b的組件標識,所述關注參數可用于指示所述組件a關注組件b的哪些狀態(tài)??傊?,所述組件標識可用于指示組件a所想要關注的組件的標識信息,所述關注參數可用于指示組件a所需要獲取的信息。當然,所述屬性也可以僅包括關注參數,事件總線在接收到關注參數之后,根據關注參數及對應組件的功能,確定組件a關注哪些組件及對應組件的哪些狀態(tài)。當然,所述注冊請求的具體構成內容有多種,不局限于上述任意一種。

事件總線320在接收到注冊請求之后,會存儲事件屬性,通過事件屬性的存儲,會建立組件和事件的關聯關系。這里的關聯關系可體現為對應關系。這樣方便,后續(xù)總線在轉發(fā)信息的過程中,接收對象的檢索。

總之,在本實施例中所述組件系統,不再是組件之間直接相連,而是在在組件之間引入了事件總線,組件通過事件總線進行相互調用或對應組件的狀態(tài)信息的獲取。這樣的話,顯然就簡便的解決了組件之間緊耦合的現象,從而解決了僅耦合導致的開發(fā)效率低、維護難度大及內存泄露等問題。

值得注意的是:在本實施例中若一個組件關注或訂閱另一個組件,則一旦事件總線320根據注冊請求注冊了之后,若事件未發(fā)生變化,則該事件一致有效。例如,組件c關注了組件d,并注冊了事件,則組件d會自動一次或多次獲取組件c的變化信息,直至該事件無效或刪除。

如圖4所示,所述事件總線320包括:

總線模塊321,用于接收所述注冊請求及發(fā)送所述推送消息;

管理模塊322,用于根據所述注冊請求,形成所述關聯關系,檢索所述關聯關系,確定接收所述推送信息的組件。

在本實施例中所述事件總線320包括兩個功能模塊,分別是總線模塊321和管理模塊322,總線模塊321主要負責信息的交互,而所述管理模塊322主要負責關聯關系的建立和檢索。通過這兩個模塊的設置,可以實現事件總線操作的模塊化,避免操作混亂,提升事件總線的有序化,減少因混亂導致的處理故障。

在一些實施例中,所述關聯模塊322,還用于對所述事件進行分類,建立每個類型事件與一個或多個組件之間的關聯關系。

基于上述例子,例如,組件a和組件c都是需要根據組件b的狀態(tài)執(zhí)行對應功能的組件。這樣的話,組件a和組件c都需要獲得組件b的狀態(tài)信息??梢詫⒔M件a和組件b對組件c的狀態(tài)信息的獲取,設置為一個事件類型,這樣的話,該事件類型包括一個被關注或被調用的組件與多個組件之間的關聯關系。相對于任意兩個組件之間的調用或關注都建立一個單獨的事件,可以減少事件總線內事件屬性的存儲條數和數據存儲量,可以提升檢索效率。

在一些實施例中,所述事件總線320,還用于接收第一組件調用預定事件的調用消息,根據所述調用消息觸發(fā)所述預定事件對應的第二組件執(zhí)行對應操作,并接收所述第二組件執(zhí)行對應操作之后返回的第一類推送消息,根據所述預定事件,將所述第一類推送消息發(fā)送給所述第一組件。本實施例中所述第一類推送消息為所述推送消息中基于調用消息產生的所述推送消息。在具體實現時,所述推送消息還包括組件在沒有調用消息觸發(fā)的情況下,自動上報的第二類推送消息。例如,某些組件自動上報自身運行狀態(tài)的第二類推送消息。

例如,組件c封裝有三個函數,組件b在自身的執(zhí)行過程中,可能需要調用組件c中的函數a。且組件b調用函數c時,與自身的調用參數相關。此時,在注冊階段,組件b通過注冊請求,在事件總線320中注冊相應的事件,從而形成了組件b和組件c之間的關聯關系。當組件b需要調用組件c中的函數a時,組件c發(fā)送所述調用消息,所述調用消息至少包括所述調用參數,還可包括調用事件的事件標識,這樣的話,事件總線320接收到所述調用消息之后,確定組件c被調用,并將調用參數傳輸給組件c,組件c基于調用參數,進行函數a的函數運算,并將運算結果主動推送給事件總線320,事件總線320通過關聯關系的檢索,確定該運算結果是發(fā)送給組件b的,則會發(fā)送給組件b。這里的組件b即為所述第一組件,所述組件c為第二組件。

結合上述實施例,總線模塊321用于調用消息的接收、推送消息的發(fā)送及給第二組件的觸發(fā)消息的發(fā)送,而所述管理模塊321主要用于觸發(fā)消息的生成、關聯關系的檢索等。所述觸發(fā)消息至少包括調用參數等信息。

在一些實施例中,所述事件總線320,還用于監(jiān)聽事件執(zhí)行的執(zhí)行狀況,根據所述執(zhí)行狀況向對對應組件發(fā)送執(zhí)行狀態(tài)消息;其中,所述執(zhí)行狀態(tài)消息用于對應組件確定是否釋放內存。

當一個組件自身的功能處理完了,可以關閉了,所述事件總線320還會確定當前是否有其他組件以事件的形式關注或調用該組件碼,若沒有則可以通過狀態(tài)消息的發(fā)送告知對應的組件,沒有其他組件的關注或調用,這樣對該組件就可以關閉了,可以釋放其占用的內存。所述事件總線320還可以在確定沒有其他組件調用該組件時,直接通過關閉指令或內存釋放指令的發(fā)送,觸發(fā)該組件關閉及內存的釋放,減少內存泄露現象的發(fā)生。

如圖5所示,本實施例提供給一種組件交互方法,應用于事件總線中,包括:

步驟s510:接收組件發(fā)送的事件的注冊請求;

步驟s520:根據所述注冊請求,關聯事件與組件形成關聯關系;

步驟s530:接收事件推送的推送消息;

步驟s540:根據所述關聯關系,將所述推送信息發(fā)送給對應的組件。

本實施例提供了一種應用于前述的連接兩個組件的事件總線中。首先,在進行組件之間的交互之前,需要接收組件的注冊請求,該注冊請求表面請求注冊的組件想要調用或關注其他組件。若關注其他組件,則需要獲取其他組件的運行狀態(tài),若調用其他組件則需要調用其他組件的一個或多個部分的功能,而且需要向被調用的組件傳輸調用參數。

事件總線根據注冊請求,關聯事件與組件形成關聯關系,該關聯關系主要包括事件屬性,該事件屬性可包括相互關注的組件和調用的組件之間的對應關系等信息。

接收到推行消息之后,會通過檢索所述關聯關系,將其從一個或多個組件接收到的推送信息發(fā)送給對應的組件,這樣就完成了組件之間的交互,相對于現有技術中組件之間直接交互的方法,解除了組件之間的緊耦合關系,提升了開發(fā)效率、降低了維護難度、減少了內存泄露現象以及執(zhí)行混亂的問題。

在一些實施例中,所述步驟s520可包括:對所述事件進行分類,建立每個類型事件與一個或多個組件之間的關聯關系。

在具體實現時,任意兩個組件之間的關注或調用都可以形成一個事件,這樣就會導致事件很多的問題。在本實施例中進行事件分類,相當于進行事件聚合,通過事件屬性反映一個組件被多個組件調用或關注的關聯關系,這樣就可以減少事件總線內事件的條數和事件屬性的存儲數據量。

在一些實施例中,所述方法還包括:

接收第一組件調用預定事件的調用消息;

根據所述調用消息觸發(fā)所述預定事件對應的第二組件執(zhí)行對應操作,并接收所述第二組件執(zhí)行對應操作之后返回的第一類推送消息;

根據所述預定事件,將所述第一類推送消息發(fā)送給所述第一組件。

若一個組件關注另一個組件,被關注的組件自動上報其狀態(tài)信息;這樣事件總線接收到表征狀態(tài)的推送消息,就會自動推送給關注其的組件。在本實施例中,第一組件關注第二組件,第一組件在需要調用第二組件時內,通過向事件總線發(fā)送調用信息,以事件總線為傳輸的中間節(jié)點,完成第二組件的調用。這里的預定事件可為任意一個事件。具體如,所述調用消息包括調用參數;其中,所述調用參數用于所述第二組件執(zhí)行所述對應操作的輸入參數。這樣方便第二組件有針對性的返回調用結果。

在某些實施例中,所述方法還包括:監(jiān)聽事件執(zhí)行的執(zhí)行狀況;根據所述執(zhí)行狀況向對對應組件發(fā)送執(zhí)行狀態(tài)消息;其中,所述執(zhí)行狀態(tài)消息用于對應組件確定是否釋放內存。

在本實施例中通過所述執(zhí)行狀態(tài)信息的發(fā)送,可以減少某些不被關注、不被調用的組件的關閉,從而實現內容的釋放,提升內存的有效使用率,減少內存泄露現象的出現。

以下結合上述實施例提供幾個具體示例:

示例一:

本示例使用事件總線對各組件之間的交互進行管理;組件之間不進行直接的交互,將需要執(zhí)行的交互以事件的形式注冊至事件總線;由總線統一調度組件的交互。同時增加事件類型的標識,每個組件可以在總線中注冊多個事件類型,進行多類型交互。這樣,可以有效的避免不同組件之間相互持有對象的引用,不但有效的降低了組件之間的耦合度,同時也大大的降低了內存泄露的可能性。

在安州android應用開發(fā)過程中,經常面臨不同頁面之間的事件監(jiān)聽,需要在不同的頁面之間設置監(jiān)聽器對象;也經常面臨在不同線程之間進行交互;更有甚者可能需要穿透多個類進行事件監(jiān)聽。各種各樣的場景都需要各種組件之間進行引用的傳遞,組件對象的引用網絡相當復雜,耦合度極高;對于框架的設計和開發(fā)都帶來不小的影響;在應用運行期間,大量的內存泄露也多是由于對象高耦合所引起。

針對上述當前移動開發(fā)所面臨的問題,本方案采用了使用事件總線對各組件之間的交互進行管理;組件之間不進行直接的交互,將需要執(zhí)行的交互以事件的形式注冊至事件總線;由總線統一調度組件的交互。同時增加事件類型的標識,每個組件可以在總線中注冊多個事件類型,進行多類型交互。這樣,可以有效的避免不同組件之間相互持有對象的引用,不但有效的降低了組件之間的耦合度,同時也大大的降低了內存泄露的可能性。

示例一:

如圖6所示,本示例提供一種組件系統,包括總線模塊、管理模塊、事件訂閱對象和事件發(fā)布模塊。

總線模塊負責解耦不同組件之間的交互。既接收事件訂閱對象對不同類型的注冊;也接收事件發(fā)布對象的事件推送。當接收到事件訂閱對象的注冊后,將其監(jiān)聽的事件類型交由管理模塊進行管理;當接收到事件發(fā)布對象推送的消息后,調用管理模塊檢索注冊相應事件的對象,進而觸發(fā)執(zhí)行;

管理模塊,當接收到總線模塊的事件注冊后,管理模塊,對接收到的事件進行分門別類的索引。以事件類型為索引,將注冊了本事件類型的組件進行關聯;當接收到總線模塊的檢索請求后,根據檢索的事件類型,依次調用本事件所關聯的組件,觸發(fā)每一個組件事件的執(zhí)行;

事件訂閱對象其實是參與交互的組件2,其目的是監(jiān)聽其他組件的狀態(tài)進而做出相應的反應。本模型中,其無需和具體的組件進行接觸式交互;僅僅需要將其關心的事件類型注冊至事件總線即可;當有符合需求的事件發(fā)生時,總線會回調訂閱對象的相應方法;

事件發(fā)布對象也是參與交互的組件2。其狀態(tài)的改變會影響其他組件的狀態(tài)。按照正常的流程,其應該持有其他組件的引用,當自身狀態(tài)發(fā)生改變時,調用其他組件的相應方法。在本模型中,其無需關心到底有哪些組件在關心自身的狀態(tài),僅僅需要將事件發(fā)布到事件總線模型。

以下提供一種具體的交互流程:

事件訂閱對象將自身關心的事件類型注冊至事件總線;

事件總線管理模塊對事件訂閱對象的事件進行索引;

事件發(fā)布對象發(fā)布狀態(tài)改變事件到總線模塊;

管理模塊檢索相應事件的注冊組件,依次觸發(fā)相應組件的方法;

通過上述步驟就可以有效的避免不同組件之間相互持有對象的引用,不但有效的降低了組件之間的耦合度,同時也大大的降低了內存泄露的可能性。

本示例采用基于事件總線的方式對各組件之間的交互進行管理,避免組件之間的直接交互,降低組件之間的耦合度,同時也大大的降低了內存泄露的可能性。

應理解,說明書通篇中提到的“一個實施例”或“一實施例”意味著與實施例有關的特定特征、結構或特性包括在本發(fā)明的至少一個實施例中。因此,在整個說明書各處出現的“在一個實施例中”或“在一實施例中”未必一定指相同的實施例。此外,這些特定的特征、結構或特性可以任意適合的方式結合在一個或多個實施例中。應理解,在本發(fā)明的各種實施例中,上述各過程的序號的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應以其功能和內在邏輯確定,而不應對本發(fā)明實施例的實施過程構成任何限定。上述本發(fā)明實施例序號僅僅為了描述,不代表實施例的優(yōu)劣。

需要說明的是,在本文中,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者裝置不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者裝置所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括該要素的過程、方法、物品或者裝置中還存在另外的相同要素。

在本申請所提供的幾個實施例中,應該理解到,所揭露的設備和方法,可以通過其它的方式實現。以上所描述的設備實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現時可以有另外的劃分方式,如:多個單元或組件可以結合,或可以集成到另一個系統,或一些特征可以忽略,或不執(zhí)行。另外,所顯示或討論的各組成部分相互之間的耦合、或直接耦合、或通信連接可以是通過一些接口,設備或單元的間接耦合或通信連接,可以是電性的、機械的或其它形式的。

上述作為分離部件說明的單元可以是、或也可以不是物理上分開的,作為單元顯示的部件可以是、或也可以不是物理單元;既可以位于一個地方,也可以分布到多個網絡單元上;可以根據實際的需要選擇其中的部分或全部單元來實現本實施例方案的目的。

另外,在本發(fā)明各實施例中的各功能單元可以全部集成在一個處理單元中,也可以是各單元分別單獨作為一個單元,也可以兩個或兩個以上單元集成在一個單元中;上述集成的單元既可以采用硬件的形式實現,也可以采用硬件加軟件功能單元的形式實現。

本領域普通技術人員可以理解:實現上述方法實施例的全部或部分步驟可以通過程序指令相關的硬件來完成,前述的程序可以存儲于計算機可讀取存儲介質中,該程序在執(zhí)行時,執(zhí)行包括上述方法實施例的步驟;而前述的存儲介質包括:移動存儲設備、只讀存儲器(readonlymemory,rom)、磁碟或者光盤等各種可以存儲程序代碼的介質。

或者,本發(fā)明上述集成的單元如果以軟件功能模塊的形式實現并作為獨立的產品銷售或使用時,也可以存儲在一個計算機可讀取存儲介質中?;谶@樣的理解,本發(fā)明實施例的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在一個存儲介質中,包括若干指令用以使得一臺計算機設備(可以是個人計算機、服務器、或者網絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分。而前述的存儲介質包括:移動存儲設備、rom、磁碟或者光盤等各種可以存儲程序代碼的介質。

以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內。因此,本發(fā)明的保護范圍應以所述權利要求的保護范圍為準。

當前第1頁1 2 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1