進程間通信方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及操作系統(tǒng)領(lǐng)域,特別涉及一種進程間通信方法及裝置。
【背景技術(shù)】
[0002]在操作系統(tǒng)中,每一個應(yīng)用程序都運行在獨立的進程中,不同的進程之間相互獨立,從而保證了當(dāng)其中一個應(yīng)用程序出現(xiàn)異常時不會影響另一個應(yīng)用程序的正常運轉(zhuǎn)。但是當(dāng)兩個進程之間需要合作時,就需要使用進程間通信。
[0003]安卓(英文:Android)系統(tǒng)中基于Binder機制來實現(xiàn)兩個進程之間的通信。以兩個進程之間傳遞數(shù)據(jù)為例,參考圖1,接收方進程12和發(fā)送方進程14均運行在用戶空間,而Binder驅(qū)動16運行在內(nèi)核空間。接收方進程12和發(fā)送方進程14兩者要實現(xiàn)通信需要遵循相同的協(xié)議,該協(xié)議在代碼上的體現(xiàn)即為兩者之間需要實現(xiàn)在Binder驅(qū)動16中的接口。在需要進程間通信時,接收方進程12創(chuàng)建一次性的IDemo接口,將該IDemo接口在Binder驅(qū)動16中封裝為接口對象18,發(fā)送方進程14可以調(diào)用該接口對象18向接收方進程12傳輸數(shù)據(jù)。
[0004]在實現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題:由于一次性的IDemo接口單次能夠傳輸?shù)臄?shù)據(jù)不能超過預(yù)定閾值,所以兩個進程之間在一次進程間通信過程中只能傳輸很小的數(shù)據(jù)。
【發(fā)明內(nèi)容】
[0005]為了解決現(xiàn)有技術(shù)的問題,本發(fā)明實施例提供了一種進程間通信方法及裝置。所述技術(shù)方案如下:
[0006]根據(jù)本發(fā)明實施例的第一方面,提供一種進程間通信方法,用于接收方進程,所述方法包括:
[0007]創(chuàng)建回調(diào)接口,所述回調(diào)接口用于實現(xiàn)數(shù)據(jù)傳輸且支持發(fā)送方進程的多次回調(diào);
[0008]向所述發(fā)送方進程發(fā)送數(shù)據(jù)獲取請求;
[0009]向所述發(fā)送方進程提供所述回調(diào)接口 ;
[0010]接收所述發(fā)送方進程對所述回調(diào)接口提供的傳輸方法的η次回調(diào),每次回調(diào)用于傳輸η個數(shù)據(jù)塊中的一塊,所述η個數(shù)據(jù)塊是所述發(fā)送方進程根據(jù)所述數(shù)據(jù)獲取請求將目標(biāo)數(shù)據(jù)切割得到的,η >2。
[0011]根據(jù)本發(fā)明實施例的第二方面,提供一種進程間通信方法,用于發(fā)送方進程,所述方法包括:
[0012]接收接收方進程發(fā)送的數(shù)據(jù)獲取請求;
[0013]獲取所述接收方進程提供的回調(diào)接口,所述回調(diào)接口是所述接收方進程創(chuàng)建的用于實現(xiàn)數(shù)據(jù)傳輸且支持多次回調(diào)的接口;
[0014]根據(jù)所述數(shù)據(jù)獲取請求將目標(biāo)數(shù)據(jù)切割為η個數(shù)據(jù)塊,η^2;
[0015]對所述回調(diào)接口提供的傳輸方法進行η次回調(diào),每次回調(diào)用于傳輸所述η個數(shù)據(jù)塊中的一個。
[0016]根據(jù)本發(fā)明實施例的第三方面,提供一種進程間通信裝置,用于接受方進程,所述裝置包括:
[0017]回調(diào)接口創(chuàng)建模塊,用于創(chuàng)建回調(diào)接口,所述回調(diào)接口用于實現(xiàn)數(shù)據(jù)傳輸且支持發(fā)送方進程的多次回調(diào);
[0018]請求發(fā)送模塊,用于向所述發(fā)送方進程發(fā)送數(shù)據(jù)獲取請求;
[0019]回調(diào)接口發(fā)送模塊,用于向所述發(fā)送方進程提供所述回調(diào)接口 ;
[0020]數(shù)據(jù)接收模塊,用于接收所述發(fā)送方進程對所述回調(diào)接口提供的傳輸方法的η次回調(diào),每次回調(diào)用于傳輸η個數(shù)據(jù)塊中的一塊,所述η個數(shù)據(jù)塊是所述發(fā)送方進程根據(jù)所述數(shù)據(jù)獲取請求將目標(biāo)數(shù)據(jù)切割得到的,η > 2。
[0021]根據(jù)本發(fā)明實施例的第四方面,提供一種進程間通信裝置,用于發(fā)送方進程,所述裝置包括:
[0022]請求接收模塊,用于接收接收方進程發(fā)送的數(shù)據(jù)獲取請求;
[0023]回調(diào)接口獲取模塊,用于獲取所述接收方進程提供的回調(diào)接口,所述回調(diào)接口是所述接收方進程創(chuàng)建的用于實現(xiàn)數(shù)據(jù)傳輸且支持多次回調(diào)的接口;
[0024]數(shù)據(jù)切割模塊,用于根據(jù)所述數(shù)據(jù)獲取請求將目標(biāo)數(shù)據(jù)切割為η個數(shù)據(jù)塊,η彡2 ;
[0025]數(shù)據(jù)回調(diào)模塊,用于對所述回調(diào)接口提供的傳輸方法進行η次回調(diào),每次回調(diào)用于傳輸所述η個數(shù)據(jù)塊中的一個。
[0026]本發(fā)明實施例提供的技術(shù)方案帶來的有益效果是:
[0027]通過接收方進程創(chuàng)建回調(diào)接口 ;接收方進程向發(fā)送方進程發(fā)送數(shù)據(jù)獲取請求;接收方進程向發(fā)送方進程提供回調(diào)接口 ;接收方進程接收發(fā)送方進程對回調(diào)接口提供的傳輸方法的η次回調(diào),每次回調(diào)用于傳輸目標(biāo)數(shù)據(jù)中η個數(shù)據(jù)塊中的一個;解決了由于一次性的IDemo接口單次能夠傳輸?shù)臄?shù)據(jù)不能超過預(yù)定閾值,所以兩個進程之間在一次進程間通信過程中只能傳輸很小的數(shù)據(jù)的問題,達到了由接收方進程向發(fā)送方進程提供支持多次回調(diào)的回調(diào)接口,發(fā)送方進程通過該回調(diào)接口實現(xiàn)了一次進程間通信過程中將大數(shù)據(jù)分批進行傳輸?shù)男Ч?,即不需要多次重建進程間通信,也不會因單次傳輸?shù)臄?shù)據(jù)量太大而導(dǎo)致傳輸異常。
【附圖說明】
[0028]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0029]圖1是現(xiàn)有技術(shù)實現(xiàn)進程間通信的方法流程圖;
[0030]圖2是本發(fā)明一個實施例提供的進程間通信方法的方法流程圖;
[0031]圖3是本發(fā)明另一實施例提供的進程間通信方法的方法流程圖;
[0032]圖4是本發(fā)明再一實施例提供的進程間通信方法的方法流程圖;
[0033]圖5是本發(fā)明一個實施例提供的進程間通信裝置的結(jié)構(gòu)方框圖;
[0034]圖6是本發(fā)明另一實施例提供的進程間通信裝置的結(jié)構(gòu)方框圖;
[0035]圖7是本發(fā)明再一實施例提供的進程間通信裝置的結(jié)構(gòu)方框圖;
[0036]圖8是本發(fā)明又一實施例提供的進程間通信裝置的結(jié)構(gòu)方框圖;
[0037]圖9是本發(fā)明一個實施例提供的電子設(shè)備的結(jié)構(gòu)方框圖。
【具體實施方式】
[0038]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細描述。
[0039]請參考圖2,其示出了本發(fā)明一個實施例提供的進程間通信方法的方法流程圖。本實施例以該進程間通信方法用于接收方進程來舉例說明,該方法包括:
[0040]步驟202,創(chuàng)建回調(diào)接口,該回調(diào)接口用于實現(xiàn)數(shù)據(jù)傳輸且支持發(fā)送方進程的多次回調(diào);
[0041]步驟204,向發(fā)送方進程發(fā)送數(shù)據(jù)獲取請求;
[0042]步驟206,向發(fā)送方進程提供回調(diào)接口 ;
[0043]步驟208,接收發(fā)送方進程對回調(diào)接口提供的傳輸方法的η次回調(diào),每次回調(diào)用于傳輸η個數(shù)據(jù)塊中的一塊,該η個數(shù)據(jù)塊是發(fā)送方進程根據(jù)數(shù)據(jù)獲取請求將目標(biāo)數(shù)據(jù)切割得到的,η彡2。
[0044]綜上所述,本實施例提供的進程間通信方法,通過接收方進程向發(fā)送方進程提供回調(diào)接口 ;接收方進程接收發(fā)送方進程對回調(diào)接口提供的傳輸方法的η次回調(diào),每次回調(diào)用于傳輸目標(biāo)數(shù)據(jù)中η個數(shù)據(jù)塊中的一個;解決了由于一次性的IDemo接口單次能夠傳輸?shù)臄?shù)據(jù)不能超過預(yù)定閾值,所以兩個進程之間在一次進程間通信過程中只能傳輸很小的數(shù)據(jù)的問題,達到了由接收方進程向發(fā)送方進程提供支持多次回調(diào)的回調(diào)接口,發(fā)送方進程通過該回調(diào)接口實現(xiàn)了一次進程間通信過程中將大數(shù)據(jù)分批進行傳輸?shù)男Ч?,即不需要多次重建進程間通信,也不會因單次傳輸?shù)臄?shù)據(jù)量太大而導(dǎo)致傳輸異常。
[0045]請參考圖3,其示出了本發(fā)明另一實施例提供的進程間通信方法的方法流程圖。本實施例以該進程間通信方法用于發(fā)送方進程來舉例說明,該方法包括:
[0046]步驟302,接收接收方進程發(fā)送的數(shù)據(jù)獲取請求;
[0047]步驟304,獲取接收方進程提供的回調(diào)接口,該回調(diào)接口是接收方進程創(chuàng)建的用于實現(xiàn)數(shù)據(jù)傳輸且支持多次回調(diào)的接口;
[0048]步驟306,根據(jù)數(shù)據(jù)獲取請求將目標(biāo)數(shù)據(jù)切割為η個數(shù)據(jù)塊,η^2;
[0049]步驟308,對回調(diào)接口提供的傳輸方法進行η次回調(diào),每次回調(diào)用于傳輸η個數(shù)據(jù)塊中的一個。
[0050]綜上所述,本實施例提供的進程間通信方法,通過發(fā)送方進程接收接收方進程發(fā)送的數(shù)據(jù)獲取請求;發(fā)送方進程獲取接收方進程提供的回調(diào)接口 ;發(fā)送方進程根據(jù)數(shù)據(jù)獲取請求將目標(biāo)數(shù)據(jù)切割為η個數(shù)據(jù)塊,η ^ 2 ;發(fā)送方進程對回調(diào)接口提供的傳輸方法進行η次回調(diào),每次回調(diào)用于傳輸η個數(shù)據(jù)塊中的一個;解決了由于一次性的IDemo接口單次能夠傳輸?shù)臄?shù)據(jù)不能超過預(yù)定閾值,所以兩個進程之間在一次進程間通信過程中只能傳輸很小的數(shù)據(jù)的問題,達到了由接收方進程向發(fā)送方進程提供支持多次回調(diào)的回調(diào)接口,發(fā)送方進程通過該回調(diào)接口實現(xiàn)了一次進程間通信過程中將大數(shù)據(jù)分批進行傳輸?shù)男Ч床恍枰啻沃亟ㄟM程間通信,也不會因單次傳輸?shù)臄?shù)據(jù)量太大而導(dǎo)致傳輸異常。
[0051]在實際的操作過程中,接收方進程與發(fā)送方進程通過實現(xiàn)相同的IDemo接口進行對應(yīng),通過基于IDemo接口中再自定義一套回調(diào)接口,該回調(diào)接口實現(xiàn)相應(yīng)的開始傳輸方法、傳輸方法和結(jié)束傳輸方法,達到接收方進程與發(fā)送方進程通過該回調(diào)接口可以進行多次數(shù)據(jù)傳輸,將較大的數(shù)據(jù)在一次進程間通信過程中分批進行傳輸。下面將采用一個實施例來進行詳細說明。
[0052]請參考圖4,其示出了本發(fā)明再一實施例提供的進程間通信方法的方法流程圖。本實施例以該進程間通信方法用于接收方進程和發(fā)送方進程來舉例說明,該接收方進程和發(fā)送方進程可以是安卓系統(tǒng)中的進程。該方法包括:
[0053]步驟401,接收方進程創(chuàng)建回調(diào)接口