一種函數(shù)調(diào)用方法、裝置及移動終端的制作方法
【專利摘要】本發(fā)明實施例提供一種函數(shù)調(diào)用方法、裝置及移動終端,其中的方法可包括:當(dāng)?shù)谝贿M程進行初始化時,將所述第一進程的至少一個函數(shù)的代碼信息和屬性信息寫至內(nèi)存中;根據(jù)第二進程發(fā)起的對所述第一進程的所述至少一個函數(shù)中的任一個函數(shù)的調(diào)用請求,從所述內(nèi)存中讀取所請求函數(shù)的屬性信息;將所請求函數(shù)的屬性信息傳輸至所述第一進程,以使所述第一進程根據(jù)所請求函數(shù)的屬性信息從所述內(nèi)存中讀取并執(zhí)行所請求函數(shù)的代碼信息。本發(fā)明可簡化函數(shù)調(diào)用過程,提升函數(shù)調(diào)用的效率和便捷性。
【專利說明】—種函數(shù)調(diào)用方法、裝置及移動終端
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及互聯(lián)網(wǎng)【技術(shù)領(lǐng)域】,尤其涉及一種函數(shù)調(diào)用方法、裝置及移動終端。
【背景技術(shù)】
[0002]進程是一個能夠獨立運行的函數(shù)集合,具備獨立的內(nèi)存空間,內(nèi)部實現(xiàn)對外封閉的特點?;谶M程的上述特點,必須采用一定的函數(shù)調(diào)用手段,才能實現(xiàn)進程間函數(shù)的調(diào)用。傳統(tǒng)的函數(shù)調(diào)用方案主要是通過協(xié)議方式,調(diào)用進程將需要調(diào)用的函數(shù)信息(包括:函數(shù)名稱、函數(shù)地址和參數(shù)信息等)轉(zhuǎn)換為協(xié)議規(guī)定的格式,然后通過進程間交換技術(shù)傳輸至被調(diào)用進程,被調(diào)用進程按照協(xié)議格式解析出對應(yīng)的函數(shù)信息,然后執(zhí)行該函數(shù)的代碼信息完成函數(shù)調(diào)用過程。上述傳統(tǒng)的函數(shù)調(diào)用方案采用協(xié)議方式,進程間不僅需要提前協(xié)商協(xié)議格式,同時還需要調(diào)用進程和被調(diào)用進程各自具備協(xié)議的轉(zhuǎn)換和解析能力,函數(shù)調(diào)用過程繁瑣、耗時。
【發(fā)明內(nèi)容】
[0003]本發(fā)明實施例提供一種函數(shù)調(diào)用方法、裝置及移動終端,可簡化函數(shù)調(diào)用過程,提升函數(shù)調(diào)用的效率和便捷性。
[0004]本發(fā)明第一方面提供一種函數(shù)調(diào)用方法,可包括:
[0005]當(dāng)?shù)谝贿M程進行初始化時,將所述第一進程的至少一個函數(shù)的代碼信息和屬性信息寫至內(nèi)存中;
[0006]根據(jù)第二進程發(fā)起的對所述第一進程的所述至少一個函數(shù)中的任一個函數(shù)的調(diào)用請求,從所述內(nèi)存中讀取所請求函數(shù)的屬性信息;
[0007]將所請求函數(shù)的屬性信息傳輸至所述第一進程,以使所述第一進程根據(jù)所請求函數(shù)的屬性信息從所述內(nèi)存中讀取并執(zhí)行所請求函數(shù)的代碼信息。
[0008]本發(fā)明第二方面提供一種函數(shù)調(diào)用裝置,可包括:
[0009]寫模塊,用于當(dāng)?shù)谝贿M程進行初始化時,將所述第一進程的至少一個函數(shù)的代碼信息和屬性信息寫至內(nèi)存中;
[0010]讀取模塊,用于根據(jù)第二進程發(fā)起的對所述第一進程的所述至少一個函數(shù)中的任一個函數(shù)的調(diào)用請求,從所述內(nèi)存中讀取所請求函數(shù)的屬性信息;
[0011]調(diào)用模塊,用于將所請求函數(shù)的屬性信息傳輸至所述第一進程,以使所述第一進程根據(jù)所請求函數(shù)的屬性信息從所述內(nèi)存中讀取并執(zhí)行所請求函數(shù)的代碼信息。
[0012]本發(fā)明第三方面提供一種移動終端,可包括:上述第二方面提供的函數(shù)調(diào)用裝置。
[0013]實施本發(fā)明實施例,具有如下有益效果:
[0014]本發(fā)明實施例中,在第一進程進行初始化時,將所述第一進程的至少一個函數(shù)的代碼信息和屬性信息寫至內(nèi)存中;在第二進程發(fā)起函數(shù)調(diào)用請求時,可從內(nèi)存中直接讀取所請求函數(shù)的屬性信息和代碼信息以完成函數(shù)調(diào)用過程,整個函數(shù)調(diào)用過程基于系統(tǒng)內(nèi)存的反射機制進行,有效地簡化了函數(shù)調(diào)用過程,避免協(xié)議方式所帶來的繁瑣和耗時,提升了函數(shù)調(diào)用的效率和便捷性。
【專利附圖】
【附圖說明】
[0015]為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0016]圖1為本發(fā)明實施例提供的一種函數(shù)調(diào)用方法的流程圖;
[0017]圖2為本發(fā)明實施例提供的另一種函數(shù)調(diào)用方法的流程圖;
[0018]圖3為本發(fā)明實施例提供的一種函數(shù)調(diào)用裝置的結(jié)構(gòu)示意圖;
[0019]圖4為本發(fā)明實施例提供的另一種函數(shù)調(diào)用裝置的結(jié)構(gòu)示意圖;
[0020]圖5為本發(fā)明實施例提供的寫模塊的結(jié)構(gòu)示意圖;
[0021]圖6為本發(fā)明實施例提供的讀取模塊的結(jié)構(gòu)示意圖;
[0022]圖7為本發(fā)明實施例提供的調(diào)用模塊的結(jié)構(gòu)示意圖。
【具體實施方式】
[0023]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0024]本發(fā)明實施例中,移動終端可包括但不限于:PAD (平板電腦)、手機、智能手機、便攜式筆記本電腦等設(shè)備。移動終端包含操作系統(tǒng)(Operating System, OS),該操作系統(tǒng)可包括但不限于:Android (安卓)系統(tǒng)、1S (蘋果公司推出的移動操作系統(tǒng))系統(tǒng),等等。第一進程可以為移動終端的操作系統(tǒng)中的任一進程,第二進程可以為移動終端的操作系統(tǒng)中除第一進程之外的任一進程。
[0025]下面將結(jié)合附圖1-附圖2,對本發(fā)明實施例提供的函數(shù)調(diào)用方法進行詳細介紹。需要說明的是,附圖1-附圖2所示的函數(shù)調(diào)用方法可以由本發(fā)明實施例提供的函數(shù)調(diào)用裝置所執(zhí)行,該函數(shù)調(diào)用裝置可運行于移動終端中。
[0026]請參見圖1,為本發(fā)明實施例提供的一種函數(shù)調(diào)用方法的流程圖;該方法可包括以下步驟SlOl-步驟S103。
[0027]S101,當(dāng)?shù)谝贿M程進行初始化時,將所述第一進程的至少一個函數(shù)的代碼信息和屬性信息寫至內(nèi)存中。
[0028]其中,函數(shù)的代碼信息指可執(zhí)行的程序,該程序運行時可完成函數(shù)的相應(yīng)功能。函數(shù)的屬性信息可包括但不限于:函數(shù)的名稱和函數(shù)的參數(shù)信息;其中,函數(shù)的參數(shù)信息包括:參數(shù)名和參數(shù)值。本步驟中,可以在第一進程進行初始化時,將所述第一進程的所有函數(shù)的代碼信息和屬性信息均寫至內(nèi)存中,以利用操作系統(tǒng)的反射機制,完成后續(xù)的函數(shù)調(diào)用過程。其中,操作系統(tǒng)的反射機制提供了一種訪問存在于內(nèi)存中的信息的方式,通過反射方式,可以動態(tài)獲取內(nèi)存中的所存在的各種信息。
[0029]S102,根據(jù)第二進程發(fā)起的對所述第一進程的所述至少一個函數(shù)中的任一個函數(shù)的調(diào)用請求,從所述內(nèi)存中讀取所請求函數(shù)的屬性信息。
[0030]由于第一進程的所有函數(shù)的代碼信息和屬性信息已在初始化時被寫至內(nèi)存中,本步驟中,根據(jù)第二進程發(fā)起的函數(shù)調(diào)用請求,利用操作系統(tǒng)的反射機制可以從內(nèi)存中讀取所請求函數(shù)的屬性信息,即讀取所請求函數(shù)的名稱和參數(shù)信息。
[0031]S103,將所請求函數(shù)的屬性信息傳輸至所述第一進程,以使所述第一進程根據(jù)所請求函數(shù)的屬性信息從所述內(nèi)存中讀取并執(zhí)行所請求函數(shù)的代碼信息。
[0032]本步驟中,所請求函數(shù)的屬性信息可以通過進程間數(shù)據(jù)交換技術(shù)傳輸至所述第一進程,優(yōu)選地,該進程間數(shù)據(jù)交換技術(shù)可以為Socket (套接字)技術(shù)。需要說明的是,第一進程接收到所請求函數(shù)的屬性信息之后,可以利用操作系統(tǒng)的反射機制,根據(jù)所請求函數(shù)的名稱從內(nèi)存中讀取所請求函數(shù)的代碼信息,并執(zhí)行所請求函數(shù)的代碼信息從而完成第二進程與第一進程之間的函數(shù)調(diào)用過程。
[0033]請參見圖2,為本發(fā)明實施例提供的另一種函數(shù)調(diào)用方法的流程圖;該方法可包括以下步驟S201-步驟S208。
[0034]S201,當(dāng)?shù)谝贿M程進行初始化時,獲取所述第一進程的至少一個類的信息,所述至少一個類中的每個類均包含至少一個函數(shù)。
[0035]類指對某種類型的對象定義變量和方法的原型。進程的所有函數(shù)信息通常以類的形式存在,一個進程包含至少一個類,一個類包含至少一個函數(shù)。其中,所述類的信息包括:類的名稱(cname)、類所包含的至少一個函數(shù)的代碼信息和屬性信息。所述函數(shù)的屬性信息包括:函數(shù)的名稱(fname)和函數(shù)的參數(shù)信息。所述函數(shù)的參數(shù)信息包括:參數(shù)名(argname)和參數(shù)值。需要說明的是,一個進程中,類的名稱(cname)用于唯一標識一個類;一個類中,函數(shù)的名稱(fname)用于唯一標識一個函數(shù)。
[0036]S202,將所述第一進程的至少一個類的信息寫至內(nèi)存中。
[0037]本步驟中,可以將所述第一進程的至少一個類的信息寫至內(nèi)存中,以利用操作系統(tǒng)的反射機制,完成后續(xù)的函數(shù)調(diào)用過程。其中,操作系統(tǒng)的反射機制提供了一種訪問存在于內(nèi)存中的信息的方式,通過反射方式,可以動態(tài)獲取內(nèi)存中的所存在的各種信息。
[0038]本實施例的步驟S201-步驟S202可以為圖1所示的步驟SlOl的具體細化步驟。
[0039]S203,接收第二進程發(fā)起的對所述第一進程的所述至少一個函數(shù)中的任一個函數(shù)的調(diào)用請求,所述調(diào)用請求中攜帶所請求函數(shù)的名稱以及所請求函數(shù)所屬類的名稱。
[0040]S204,根據(jù)所請求函數(shù)所屬類的名稱,從內(nèi)存中讀取所請求函數(shù)所屬類的信息。[0041 ] 由于一個進程中,類的名稱(cname )用于唯一標識一個類,本步驟可根據(jù)所請求函數(shù)所屬類的名稱,可從內(nèi)存中讀取所請求函數(shù)所屬類的信息,即讀取所請求函數(shù)所屬類的名稱、所請求函數(shù)所屬類包含的至少一個函數(shù)的代碼信息和屬性信息。
[0042]S205,根據(jù)所請求函數(shù)的名稱,從讀取的所請求函數(shù)所屬類的信息中獲取所請求函數(shù)的屬性信息。
[0043]由于一個類中,函數(shù)的名稱(fname)用于唯一標識一個函數(shù);本步驟則可以根據(jù)所請求函數(shù)的名稱,從讀取的所請求函數(shù)所屬類的信息中獲取所請求函數(shù)的屬性信息,即讀取所請求函數(shù)的名稱和參數(shù)信息。
[0044]本實施例的步驟S203-步驟S205可以為圖1所示實施例的步驟S102的具體細化步驟。
[0045]S206,將所請求函數(shù)所屬類的名稱和所請求函數(shù)的屬性信息存儲至字典數(shù)據(jù)庫中。
[0046]本步驟中,可以以名稱作為索引Key (關(guān)鍵字),具體地,可以將所請求函數(shù)所屬類的名稱(cname)作為一級索引Key,將所請求函數(shù)的名稱(fname)作為二級索引Key,將所請求函數(shù)的參數(shù)名(argname)作為三級索引Key,按照索引Key的層級將所請求函數(shù)所屬類的名稱和所請求函數(shù)的屬性信息存儲至字典數(shù)據(jù)庫中。
[0047]S207,對所述字典數(shù)據(jù)庫進行二進制序列化處理,獲得二進制數(shù)據(jù)串。
[0048]本步驟對所述字典數(shù)據(jù)庫進行二進制序列化處理的過程,可以為將所述字典數(shù)據(jù)庫轉(zhuǎn)換為二進制形式的數(shù)據(jù)串的過程,采用二進制數(shù)據(jù)串可以更便捷、更迅速地實現(xiàn)對字典數(shù)據(jù)庫的傳輸,同時可有效節(jié)省傳輸所占用的系統(tǒng)資源。需要說明的是,為了方便傳輸,本步驟也可以對字典數(shù)據(jù)庫進行其他方式的處理,例如:對所述字典數(shù)據(jù)庫進行八進制序列化處理,等等,此情況下可類似分析。
[0049]S208,將所述二進制數(shù)據(jù)串傳輸至所述第一進程,使所述第一進程解析所述二進制數(shù)據(jù)串獲得所請求函數(shù)所屬類的名稱和所請求函數(shù)的屬性信息,并根據(jù)所請求函數(shù)所屬類的名稱和所請求函數(shù)的名稱從所述內(nèi)存中讀取所請求函數(shù)的代碼信息,根據(jù)所請求函數(shù)的參數(shù)信息執(zhí)行所請求函數(shù)的代碼信息。
[0050]需要說明的是,二進制數(shù)據(jù)串傳輸至所述第一進程之后,第一進程可解析所述二進制數(shù)據(jù)串,獲得字典數(shù)據(jù)庫;第一進程可基于字典數(shù)據(jù)庫的一級索引Key (即所請求函數(shù)所屬類的名稱(cname)),從所述字典數(shù)據(jù)庫中查找到所請求函數(shù)的類;基于字典數(shù)據(jù)庫的二級索引Key(即所請求函數(shù)的名稱(fname)),從所述字典數(shù)據(jù)庫中查找到所請求函數(shù)的屬性信息;基于字典數(shù)據(jù)庫的三級索引Key (即所請求函數(shù)的參數(shù)名(argname)),從所述字典數(shù)據(jù)庫中獲得所請求函數(shù)的參數(shù)值和代碼信息;第一進程將獲取的所請求函數(shù)的參數(shù)值代入所請求函數(shù)的代碼信息并執(zhí)行該代碼信息,即可完成第二進程與第一進程之間的函數(shù)調(diào)用過程。
[0051]本實施例的步驟S207-步驟S208可以為圖1所示實施例的步驟S103的具體細化步驟。
[0052]下面將以一個具體實例來說明本發(fā)明實施例提供的函數(shù)調(diào)用方法的流程。
[0053]本實例中,第一進程可表示為進程A,第二進程可表示為進程B,進程A包含a和b兩個類,a類包含al、a2和a3共三個函數(shù),b類包含函數(shù)bl和b2。本實施例以進程B調(diào)用進程A的函數(shù)al為例進行說明,則函數(shù)調(diào)用方法的流程如下:
[0054]當(dāng)進程A進行初始化時,獲取進程A的a和b兩個類的信息,即獲取a類的名稱“a”、函數(shù)al、a2和a3的代碼信息和屬性信息、b類的名稱“b”以及函數(shù)bl和b2的代碼信息和屬性信息。假設(shè)函數(shù)al的名稱為“al”、參數(shù)名為“argl”。將上述獲取進程A的所有信息寫至內(nèi)存中。
[0055]接收進程B發(fā)起針對進程A的調(diào)用請求,所述調(diào)用請求中攜帶類a的名稱“a”以及函數(shù)al的名稱“al”。根據(jù)“a”可從內(nèi)存中讀取類a的信息,即可讀取類a的名稱“a”、函數(shù)al、a2和a3的代碼信息和屬性信息。根據(jù)“al”可獲取函數(shù)al的屬性信息。
[0056]將類a的名稱“a”和函數(shù)al的屬性信息存儲至字典數(shù)據(jù)庫中;對所述字典數(shù)據(jù)庫進行二進制序列化處理,獲得二進制數(shù)據(jù)串;將所述二進制數(shù)據(jù)串傳輸至進程A,進程A可解析所述二進制數(shù)據(jù)串獲得類a的名稱“a”和函數(shù)al的屬性信息,并根據(jù)類a的名稱“a”和函數(shù)a的名稱“al”從所述內(nèi)存中讀取函數(shù)al的代碼信息,進程A將函數(shù)al的參數(shù)信息代入函數(shù)al的代碼信息中并執(zhí)行該代碼信息,從而完成進程A與進程B之間的函數(shù)調(diào)用過程。
[0057]通過上述各實施例的描述,本發(fā)明實施例中,在第一進程進行初始化時,將所述第一進程的至少一個函數(shù)的代碼信息和屬性信息寫至內(nèi)存中;在第二進程發(fā)起函數(shù)調(diào)用請求時,可從內(nèi)存中直接讀取所請求函數(shù)的屬性信息和代碼信息以完成函數(shù)調(diào)用過程,整個函數(shù)調(diào)用過程基于系統(tǒng)內(nèi)存的反射機制進行,有效地簡化了函數(shù)調(diào)用過程,避免協(xié)議方式所帶來的繁瑣和耗時,提升了函數(shù)調(diào)用的效率和便捷性。
[0058]下面將結(jié)合附圖3-附圖7,對本發(fā)明實施例提供的函數(shù)調(diào)用裝置進行詳細介紹。需要說明的是,附圖3-附圖7所示的函數(shù)調(diào)用裝置可運行于移動終端中,用于執(zhí)行附圖1-附圖2所示的函數(shù)調(diào)用方法。
[0059]請參見圖3,為本發(fā)明實施例提供的一種函數(shù)調(diào)用裝置的結(jié)構(gòu)示意圖;該裝置可包括:寫模塊101、讀取模塊102和調(diào)用模塊103。
[0060]寫模塊101,用于當(dāng)?shù)谝贿M程進行初始化時,將所述第一進程的至少一個函數(shù)的代碼信息和屬性信息寫至內(nèi)存中。
[0061]其中,函數(shù)的代碼信息指可執(zhí)行的程序,該程序運行時可完成函數(shù)的相應(yīng)功能。函數(shù)的屬性信息可包括但不限于:函數(shù)的名稱和函數(shù)的參數(shù)信息;其中,函數(shù)的參數(shù)信息包括:參數(shù)名和參數(shù)值。所述寫模塊101可以在第一進程進行初始化時,將所述第一進程的所有函數(shù)的代碼信息和屬性信息均寫至內(nèi)存中,以利用操作系統(tǒng)的反射機制,完成后續(xù)的函數(shù)調(diào)用過程。其中,操作系統(tǒng)的反射機制提供了一種訪問存在于內(nèi)存中的信息的方式,通過反射方式,可以動態(tài)獲取內(nèi)存中的所存在的各種信息。
[0062]讀取模塊102,用于根據(jù)第二進程發(fā)起的對所述第一進程的所述至少一個函數(shù)中的任一個函數(shù)的調(diào)用請求,從所述內(nèi)存中讀取所請求函數(shù)的屬性信息。
[0063]由于第一進程的所有函數(shù)的代碼信息和屬性信息已在初始化時被寫至內(nèi)存中,所述讀取模塊102根據(jù)第二進程發(fā)起的函數(shù)調(diào)用請求,利用操作系統(tǒng)的反射機制可以從內(nèi)存中讀取所請求函數(shù)的屬性信息,即讀取所請求函數(shù)的名稱和參數(shù)信息。
[0064]調(diào)用模塊103,用于將所請求函數(shù)的屬性信息傳輸至所述第一進程,以使所述第一進程根據(jù)所請求函數(shù)的屬性信息從所述內(nèi)存中讀取并執(zhí)行所請求函數(shù)的代碼信息。
[0065]所述調(diào)用模塊103可以通過進程間數(shù)據(jù)交換技術(shù)將所請求函數(shù)的屬性信息傳輸至所述第一進程,優(yōu)選地,該進程間數(shù)據(jù)交換技術(shù)可以為Socket技術(shù)。需要說明的是,第一進程接收到所請求函數(shù)的屬性信息之后,可以利用操作系統(tǒng)的反射機制,根據(jù)所請求函數(shù)的名稱從內(nèi)存中讀取所請求函數(shù)的代碼信息,并執(zhí)行所請求函數(shù)的代碼信息從而完成第二進程與第一進程之間的函數(shù)調(diào)用過程。
[0066]請參見圖4,為本發(fā)明實施例提供的另一種函數(shù)調(diào)用裝置的結(jié)構(gòu)示意圖;該裝置可包括:寫模塊101、讀取模塊102、調(diào)用模塊103和存儲模塊104。其中,寫模塊101、讀取模塊102和調(diào)用模塊103的結(jié)構(gòu)和功能可參見圖3所示實施例的相關(guān)描述,在此不贅述。
[0067]存儲模塊104,用于將所請求函數(shù)所屬類的名稱和所請求函數(shù)的屬性信息存儲至字典數(shù)據(jù)庫中。
[0068]所述存儲模塊104可以以名稱作為索引Key(關(guān)鍵字),具體地,可以將所請求函數(shù)所屬類的名稱(cname)作為一級索引Key,將所請求函數(shù)的名稱(fname)作為二級索引Key,將所請求函數(shù)的參數(shù)名(argname)作為三級索引Key,按照索引Key的層級將所請求函數(shù)所屬類的名稱和所請求函數(shù)的屬性信息存儲至字典數(shù)據(jù)庫中。
[0069]下面將結(jié)合附圖5-附圖7,對上述函數(shù)調(diào)用裝置的各模塊進行詳細介紹。
[0070]請參見圖5,為本發(fā)明實施例提供的寫模塊的結(jié)構(gòu)示意圖;該寫模塊101可包括:獲取單元1101和寫單元1102。
[0071]獲取單元1101,用于當(dāng)?shù)谝贿M程進行初始化時,獲取所述第一進程的至少一個類的信息,所述至少一個類中的每個類均包含至少一個函數(shù)。
[0072]類指對某種類型的對象定義變量和方法的原型。進程的所有函數(shù)信息通常以類的形式存在,一個進程包含至少一個類,一個類包含至少一個函數(shù)。其中,所述類的信息包括:類的名稱(cname)、類所包含的至少一個函數(shù)的代碼信息和屬性信息。所述函數(shù)的屬性信息包括:函數(shù)的名稱(fname)和函數(shù)的參數(shù)信息。所述函數(shù)的參數(shù)信息包括:參數(shù)名(argname)和參數(shù)值。需要說明的是,一個進程中,類的名稱(cname)用于唯一標識一個類;一個類中,函數(shù)的名稱(fname)用于唯一標識一個函數(shù)。
[0073]寫單元1102,用于將所述第一進程的至少一個類的信息寫至內(nèi)存中。
[0074]所述寫單元1102可以將所述第一進程的至少一個類的信息寫至內(nèi)存中,以利用操作系統(tǒng)的反射機制,完成后續(xù)的函數(shù)調(diào)用過程。其中,操作系統(tǒng)的反射機制提供了一種訪問存在于內(nèi)存中的信息的方式,通過反射方式,可以動態(tài)獲取內(nèi)存中的所存在的各種信息。
[0075]請參見圖6,為本發(fā)明實施例提供的讀取模塊的結(jié)構(gòu)示意圖;該讀取模塊102可包括:請求接收單元1201、類讀取單元1202和函數(shù)讀取單元1203。
[0076]請求接收單元1201,用于接收第二進程發(fā)起的對所述第一進程的所述至少一個函數(shù)中的任一個函數(shù)的調(diào)用請求,所述調(diào)用請求中攜帶所請求函數(shù)的名稱以及所請求函數(shù)所屬類的名稱。
[0077]類讀取單元1202,用于根據(jù)所請求函數(shù)所屬類的名稱,從內(nèi)存中讀取所請求函數(shù)所屬類的信息。
[0078]由于一個進程中,類的名稱(cname)用于唯一標識一個類,所述類讀取單元1202可根據(jù)所請求函數(shù)所屬類的名稱,可從內(nèi)存中讀取所請求函數(shù)所屬類的信息,即讀取所請求函數(shù)所屬類的名稱、所請求函數(shù)所屬類包含的至少一個函數(shù)的代碼信息和屬性信息。
[0079]函數(shù)讀取單元1203,根據(jù)所請求函數(shù)的名稱,從讀取的所請求函數(shù)所屬類的信息中獲取所請求函數(shù)的屬性信息。
[0080]由于一個類中,函數(shù)的名稱(fname)用于唯一標識一個函數(shù);所述函數(shù)讀取單元1203可以根據(jù)所請求函數(shù)的名稱,從讀取的所請求函數(shù)所屬類的信息中獲取所請求函數(shù)的屬性信息,即讀取所請求函數(shù)的名稱和參數(shù)信息。
[0081]請參見圖7,為本發(fā)明實施例提供的調(diào)用模塊的結(jié)構(gòu)示意圖;該調(diào)用模塊103可包括:處理單元1301和傳輸單元1302。
[0082]處理單元1301,用于對所述字典數(shù)據(jù)庫進行二進制序列化處理,獲得二進制數(shù)據(jù)串O
[0083]所述處理單元1301對所述字典數(shù)據(jù)庫進行二進制序列化處理的過程,可以為將所述字典數(shù)據(jù)庫轉(zhuǎn)換為二進制形式的數(shù)據(jù)串的過程,采用二進制數(shù)據(jù)串可以更便捷、更迅速地實現(xiàn)對字典數(shù)據(jù)庫的傳輸,同時可有效節(jié)省傳輸所占用的系統(tǒng)資源。需要說明的是,為了方便傳輸,本步驟也可以對字典數(shù)據(jù)庫進行其他方式的處理,例如:對所述字典數(shù)據(jù)庫進行八進制序列化處理,等等,此情況下可類似分析。
[0084]傳輸單元1302,用于將所述二進制數(shù)據(jù)串傳輸至所述第一進程,使所述第一進程解析所述二進制數(shù)據(jù)串獲得所請求函數(shù)所屬類的名稱和所請求函數(shù)的屬性信息,并根據(jù)所請求函數(shù)所屬類的名稱和所請求函數(shù)的名稱從所述內(nèi)存中讀取所請求函數(shù)的代碼信息,根據(jù)所請求函數(shù)的參數(shù)信息執(zhí)行所請求函數(shù)的代碼信息。
[0085]需要說明的是,二進制數(shù)據(jù)串傳輸至所述第一進程之后,第一進程可解析所述二進制數(shù)據(jù)串,獲得字典數(shù)據(jù)庫;第一進程可基于字典數(shù)據(jù)庫的一級索引Key (即所請求函數(shù)所屬類的名稱(cname)),從所述字典數(shù)據(jù)庫中查找到所請求函數(shù)的類;基于字典數(shù)據(jù)庫的二級索引Key(即所請求函數(shù)的名稱(fname)),從所述字典數(shù)據(jù)庫中查找到所請求函數(shù)的屬性信息;基于字典數(shù)據(jù)庫的三級索引Key (即所請求函數(shù)的參數(shù)名(argname)),從所述字典數(shù)據(jù)庫中獲得所請求函數(shù)的參數(shù)值和代碼信息;第一進程將獲取的所請求函數(shù)的參數(shù)值代入所請求函數(shù)的代碼信息并執(zhí)行該代碼信息,即可完成第二進程與第一進程之間的函數(shù)調(diào)用過程。
[0086]通過上述附圖3-附圖7所示實施例的描述,本發(fā)明實施例中,在第一進程進行初始化時,將所述第一進程的至少一個函數(shù)的代碼信息和屬性信息寫至內(nèi)存中;在第二進程發(fā)起函數(shù)調(diào)用請求時,可從內(nèi)存中直接讀取所請求函數(shù)的屬性信息和代碼信息以完成函數(shù)調(diào)用過程,整個函數(shù)調(diào)用過程基于系統(tǒng)內(nèi)存的反射機制進行,有效地簡化了函數(shù)調(diào)用過程,避免協(xié)議方式所帶來的繁瑣和耗時,提升了函數(shù)調(diào)用的效率和便捷性。
[0087]本發(fā)明實施例還公開了一種移動終端,該移動終端可包含函數(shù)調(diào)用裝置,該函數(shù)調(diào)用裝置的結(jié)構(gòu)和功能可參見圖3-圖7所示實施例的相關(guān)描述,在此不贅述。
[0088]本發(fā)明實施例中,在第一進程進行初始化時,將所述第一進程的至少一個函數(shù)的代碼信息和屬性信息寫至內(nèi)存中;在第二進程發(fā)起函數(shù)調(diào)用請求時,可從內(nèi)存中直接讀取所請求函數(shù)的屬性信息和代碼信息以完成函數(shù)調(diào)用過程,整個函數(shù)調(diào)用過程基于系統(tǒng)內(nèi)存的反射機制進行,有效地簡化了函數(shù)調(diào)用過程,避免協(xié)議方式所帶來的繁瑣和耗時,提升了函數(shù)調(diào)用的效率和便捷性。
[0089]本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì)中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁碟、光盤、只讀存儲記憶體(Read-Only Memory, ROM)或隨機存儲記憶體(Random AccessMemory, RAM)等。
[0090]以上所揭露的僅為本發(fā)明較佳實施例而已,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
【權(quán)利要求】
1.一種函數(shù)調(diào)用方法,其特征在于,包括: 當(dāng)?shù)谝贿M程進行初始化時,將所述第一進程的至少一個函數(shù)的代碼信息和屬性信息寫至內(nèi)存中; 根據(jù)第二進程發(fā)起的對所述第一進程的所述至少一個函數(shù)中的任一個函數(shù)的調(diào)用請求,從所述內(nèi)存中讀取所請求函數(shù)的屬性信息; 將所請求函數(shù)的屬性信息傳輸至所述第一進程,以使所述第一進程根據(jù)所請求函數(shù)的屬性信息從所述內(nèi)存中讀取并執(zhí)行所請求函數(shù)的代碼信息。
2.如權(quán)利要求1所述的方法,其特征在于,所述當(dāng)?shù)谝贿M程進行初始化時,將所述第一進程的至少一個函數(shù)的代碼信息和屬性信息寫至內(nèi)存中,包括: 當(dāng)?shù)谝贿M程進行初始化時,獲取所述第一進程的至少一個類的信息,所述至少一個類中的每個類均包含至少一個函數(shù); 將所述第一進程的至少一個類的信息寫至內(nèi)存中。
3.如權(quán)利要求2所述的方法,其特征在于,所述類的信息包括:類的名稱、類所包含的至少一個函數(shù)的代碼信息和屬性信息; 所述函數(shù)的屬性信息包括:函數(shù)的名稱和函數(shù)的參數(shù)信息。
4.如權(quán)利要求3所述的方法,其特征在于,所述根據(jù)第二進程發(fā)起的對所述第一進程的所述至少一個函數(shù)中的任一個函數(shù)的調(diào)用請求,從所述內(nèi)存中讀取所請求函數(shù)的屬性信息,包括: 接收第二進程發(fā)起的對所述第一進程的所述至少一個函數(shù)中的任一個函數(shù)的調(diào)用請求,所述調(diào)用請求中攜帶所請求函數(shù)的名稱以及所請求函數(shù)所屬類的名稱; 根據(jù)所請求函數(shù)所屬類的名稱,從內(nèi)存中讀取所請求函數(shù)所屬類的信息; 根據(jù)所請求函數(shù)的名稱,從讀取的所請求函數(shù)所屬類的信息中獲取所請求函數(shù)的屬性信息。
5.如權(quán)利要求4所述的方法,其特征在于,所述從所述內(nèi)存中讀取所請求函數(shù)的屬性信息之后,所述將所請求函數(shù)的屬性信息傳輸至所述第一進程之前,還包括: 將所請求函數(shù)所屬類的名稱和所請求函數(shù)的屬性信息存儲至字典數(shù)據(jù)庫中。
6.如權(quán)利要求5所述的方法,其特征在于,所述將所請求函數(shù)的屬性信息傳輸至所述第一進程,以使所述第一進程根據(jù)所請求函數(shù)的屬性信息從所述內(nèi)存中讀取并執(zhí)行所請求函數(shù)的代碼信息,包括: 對所述字典數(shù)據(jù)庫進行二進制序列化處理,獲得二進制數(shù)據(jù)串; 將所述二進制數(shù)據(jù)串傳輸至所述第一進程,使所述第一進程解析所述二進制數(shù)據(jù)串獲得所請求函數(shù)所屬類的名稱和所請求函數(shù)的屬性信息,并根據(jù)所請求函數(shù)所屬類的名稱和所請求函數(shù)的名稱從所述內(nèi)存中讀取所請求函數(shù)的代碼信息,根據(jù)所請求函數(shù)的參數(shù)信息執(zhí)行所請求函數(shù)的代碼信息。
7.—種函數(shù)調(diào)用裝置,其特征在于,包括: 寫模塊,用于當(dāng)?shù)谝贿M程進行初始化時,將所述第一進程的至少一個函數(shù)的代碼信息和屬性信息寫至內(nèi)存中; 讀取模塊,用于根據(jù)第二進程發(fā)起的對所述第一進程的所述至少一個函數(shù)中的任一個函數(shù)的調(diào)用請求,從所述內(nèi)存中讀取所請求函數(shù)的屬性信息; 調(diào)用模塊,用于將所請求函數(shù)的屬性信息傳輸至所述第一進程,以使所述第一進程根據(jù)所請求函數(shù)的屬性信息從所述內(nèi)存中讀取并執(zhí)行所請求函數(shù)的代碼信息。
8.如權(quán)利要求7所述的裝置,其特征在于,所述寫模塊包括: 獲取單元,用于當(dāng)?shù)谝贿M程進行初始化時,獲取所述第一進程的至少一個類的信息,所述至少一個類中的每個類均包含至少一個函數(shù); 寫單元,用于將所述第一進程的至少一個類的信息寫至內(nèi)存中。
9.如權(quán)利要求8所述的裝置,其特征在于,所述類的信息包括:類的名稱、類所包含的至少一個函數(shù)的代碼信息和屬性信息; 所述函數(shù)的屬性信息包括:函數(shù)的名稱和函數(shù)的參數(shù)信息。
10.如權(quán)利要求9所述的裝置,其特征在于,所述讀取模塊包括: 請求接收單元,用于接收第二進程發(fā)起的對所述第一進程的所述至少一個函數(shù)中的任一個函數(shù)的調(diào)用請求,所述調(diào)用請求中攜帶所請求函數(shù)的名稱以及所請求函數(shù)所屬類的名稱; 類讀取單元,用于根據(jù)所請求函數(shù)所屬類的名稱,從內(nèi)存中讀取所請求函數(shù)所屬類的信息; 函數(shù)讀取單元,根據(jù)所請求函數(shù)的名稱,從讀取的所請求函數(shù)所屬類的信息中獲取所請求函數(shù)的屬性信息。
11.如權(quán)利要求10所述的裝置,其特征在于,還包括: 存儲模塊,用于將所請求函數(shù)所屬類的名稱和所請求函數(shù)的屬性信息存儲至字典數(shù)據(jù)庫中。
12.如權(quán)利要求11所述的裝置,其特征在于,所述調(diào)用模塊包括: 處理單元,用于對所述字典數(shù)據(jù)庫進行二進制序列化處理,獲得二進制數(shù)據(jù)串; 傳輸單元,用于將所述二進制數(shù)據(jù)串傳輸至所述第一進程,使所述第一進程解析所述二進制數(shù)據(jù)串獲得所請求函數(shù)所屬類的名稱和所請求函數(shù)的屬性信息,并根據(jù)所請求函數(shù)所屬類的名稱和所請求函數(shù)的名稱從所述內(nèi)存中讀取所請求函數(shù)的代碼信息,根據(jù)所請求函數(shù)的參數(shù)信息執(zhí)行所請求函數(shù)的代碼信息。
13.—種移動終端,其特征在于,包括:如權(quán)利要求7-12任一項所述的函數(shù)調(diào)用裝置。
【文檔編號】G06F9/445GK104516740SQ201310445319
【公開日】2015年4月15日 申請日期:2013年9月26日 優(yōu)先權(quán)日:2013年9月26日
【發(fā)明者】葉禮偉 申請人:騰訊科技(深圳)有限公司