本申請(qǐng)涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種調(diào)用應(yīng)用程序的APK插件的方法及裝置。
背景技術(shù):
智能終端在日常生活中扮演了越來越重要的角色,以Android智能手機(jī)為例,為滿足各種需求,可以將主應(yīng)用程序即APK(Android Package,Android安裝包)安裝在系統(tǒng)平臺(tái)中,當(dāng)需要某些功能時(shí),就可以打開安裝在系統(tǒng)平臺(tái)中的應(yīng)該程序,來實(shí)現(xiàn)某些功能。
但是隨著各行業(yè)的進(jìn)步,應(yīng)用程序的集成的功能更加豐富且界面更加人性化、絢麗,所以導(dǎo)致了應(yīng)用程序的體積越來越大,由于應(yīng)用程序集成的每個(gè)功能可能都由不同的開發(fā)團(tuán)隊(duì)開發(fā),所以不同功能的更新周期都不盡相同,如果僅為了某個(gè)集成在應(yīng)用程序中的功能就重新安裝應(yīng)用程序的整個(gè)安裝包,顯然即浪費(fèi)網(wǎng)絡(luò)傳輸資源,又浪費(fèi)智能手機(jī)的處理資源。況且,有些功能不一定所有人都需要,所以可以將集成在應(yīng)用程序中功能做成插件,當(dāng)需要某個(gè)功能時(shí),加載并調(diào)用對(duì)應(yīng)的插件功能就可以了。比如,以導(dǎo)航軟件為例,主程序包含最基本的導(dǎo)航功能,然而為了滿足個(gè)性化的需求,可以在導(dǎo)航軟件中集成擁堵提示,限行提示,違章查詢等。可以將這些功能做成APK插件,當(dāng)用戶需要時(shí),下載對(duì)應(yīng)的插件,加載并調(diào)用即可。
而現(xiàn)有技術(shù)在實(shí)現(xiàn)APK插件的功能時(shí),需要先將APK插件安裝在系統(tǒng)平臺(tái)中,然后加載并調(diào)用,如果插件很多,就需要全部安裝。比如,依舊以上文的導(dǎo)航軟件為例,如果需要擁堵提示、限行提示以及違章查詢,就需要下載對(duì)應(yīng)的APK插件,并全部安裝在系統(tǒng)平臺(tái)中,占用系統(tǒng)平臺(tái)的存儲(chǔ)空間。也就 是還不能夠在僅下載而不安裝APK插件的情況下,調(diào)用該APK插件。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)實(shí)施例提供一種調(diào)用應(yīng)用程序的APK插件的方法,用于在不安裝插件的情況下,調(diào)用插件的功能。
本申請(qǐng)實(shí)施例提供一種調(diào)用應(yīng)用程序的APK插件的裝置,用于在不安裝插件的情況下,調(diào)用插件的功能。
本申請(qǐng)實(shí)施例采用下述技術(shù)方案:
一種調(diào)用應(yīng)用程序的APK插件的方法,包括:
當(dāng)接收到調(diào)用請(qǐng)求后,應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類以APK插件中插件活動(dòng)組件類是否為空,判斷是否成功加載APK插件;
當(dāng)加載成功所述APK插件時(shí),實(shí)例化所述APK插件中插件活動(dòng)組件類對(duì)應(yīng)的Activity;
所述APK插件中插件活動(dòng)組件類的子類以baseActivity是否為空,判斷是否由所述主程序以插件形式被調(diào)用;
當(dāng)確定所述APK插件以插件形式被所述應(yīng)用程序調(diào)用時(shí),應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類調(diào)用所述Activity的實(shí)例。
優(yōu)選地,應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類調(diào)用所述Activity的實(shí)例,包括:檢測(cè)所述APK插件中是否存在所述Activity;當(dāng)存在所述Activity時(shí),應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類以插件形式調(diào)用所述Activity的實(shí)例,以便通過Activity實(shí)例中的方法實(shí)現(xiàn)所述APK插件的功能。
優(yōu)選地,所述方法還包括:當(dāng)不存在所述Activity時(shí),應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類以非插件形式調(diào)用所述Activity的父類方法,以便實(shí)現(xiàn)所述APK插件的功能。
優(yōu)選地,所述方法還包括:當(dāng)不存在時(shí),再次實(shí)例化所述APK插件中插件活動(dòng)組件類對(duì)應(yīng)的Activity;應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類再次調(diào) 用所述Activity的實(shí)例。
優(yōu)選地,所述APK插件中插件活動(dòng)組件類的子類以baseActivity是否為空,判斷是否由所述主程序以插件形式被調(diào)用,包括:所述APK插件中插件活動(dòng)組件類的子類判斷baseActivity是否為空;當(dāng)baseActivity不為空時(shí),確定所述APK插件以插件形式被所述應(yīng)用程序調(diào)用。
一種調(diào)用應(yīng)用程序的APK插件的裝置,包括:加載判斷單元、實(shí)例化單元、調(diào)用形式判斷單元以及調(diào)用單元,其中,
所述加載判斷單元,用于當(dāng)接收到調(diào)用請(qǐng)求后,應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類以APK插件中插件活動(dòng)組件類是否為空,判斷是否成功加載APK插件;
所述實(shí)例化單元,用于當(dāng)加載成功所述APK插件時(shí),實(shí)例化所述APK插件中插件活動(dòng)組件類對(duì)應(yīng)的Activity;
所述調(diào)用形式判斷單元,用于所述APK插件中插件活動(dòng)組件類的子類以baseActivity是否為空,判斷是否由所述主程序以插件形式被調(diào)用;
所述調(diào)用單元,用于當(dāng)確定所述APK插件以插件形式被所述應(yīng)用程序調(diào)用,應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類調(diào)用所述Activity的實(shí)例。
優(yōu)選地,所述調(diào)用單元,具體用于:檢測(cè)所述APK插件中是否存在所述Activity;當(dāng)存在所述Activity時(shí),應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類以插件形式調(diào)用所述Activity的實(shí)例,以便通過Activity實(shí)例中的方法實(shí)現(xiàn)所述APK插件的功能。
優(yōu)選地,所述調(diào)用單元,具體用于:當(dāng)不存在所述Activity時(shí),應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類以非插件形式調(diào)用所述Activity的父類方法,以便實(shí)現(xiàn)所述APK插件的功能。
優(yōu)選地,所述調(diào)用單元,具體用于:當(dāng)不存在時(shí),再次實(shí)例化所述APK插件中插件活動(dòng)組件類對(duì)應(yīng)的Activity;應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類再次調(diào)用所述Activity的實(shí)例。
優(yōu)選地,所述調(diào)用形式判斷單元,具體用于:所述APK插件中插件活動(dòng)組件類的子類判斷baseActivity是否為空;當(dāng)baseActivity不為空時(shí),確定所述APK插件以插件形式被所述應(yīng)用程序調(diào)用。
本申請(qǐng)實(shí)施例采用的上述至少一個(gè)技術(shù)方案能夠達(dá)到以下有益效果:主程序加載插件后,實(shí)例化APK插件中插件活動(dòng)組件類對(duì)應(yīng)的Activity;當(dāng)確定APK插件以插件形式被主程序調(diào)用,主程序的調(diào)用插件活動(dòng)組件類的子類調(diào)用Activity的實(shí)例,即通過主系統(tǒng)調(diào)用主程序?qū)?yīng)的方法,主程序調(diào)用插件對(duì)應(yīng)的方法,實(shí)現(xiàn)了插件的調(diào)用。跳過繁瑣復(fù)雜的安裝步驟,只需加載插件后即可調(diào)用,從而實(shí)現(xiàn)插件的功能。
附圖說明
此處所說明的附圖用來提供對(duì)本申請(qǐng)的進(jìn)一步理解,構(gòu)成本申請(qǐng)的一部分,本申請(qǐng)的示意性實(shí)施例及其說明用于解釋本申請(qǐng),并不構(gòu)成對(duì)本申請(qǐng)的不當(dāng)限定。在附圖中:
圖1為本申請(qǐng)實(shí)施例1提供的一種調(diào)用應(yīng)用程序的APK插件的方法的流程示意圖;
圖2為本申請(qǐng)實(shí)施例1提供的主程序的抽象父類的定義示意圖;
圖3為本申請(qǐng)實(shí)施例1提供的APK插件的抽象父類的定義示意圖;
圖4為本申請(qǐng)實(shí)施例2提供的一種調(diào)用應(yīng)用程序的APK插件的裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
為使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本申請(qǐng)具體實(shí)施例及相應(yīng)的附圖對(duì)本申請(qǐng)技術(shù)方案進(jìn)行清楚、完整地描述。顯然,所描述的實(shí)施例僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施 例,都屬于本申請(qǐng)保護(hù)的范圍。
以下結(jié)合附圖,詳細(xì)說明本申請(qǐng)各實(shí)施例提供的技術(shù)方案。
實(shí)施例1
本申請(qǐng)實(shí)施例提出了一種調(diào)用應(yīng)用程序的APK插件的方法,用于在不安裝插件的情況下,調(diào)用插件的功能,該方法的流程示意圖如圖1所示,包括下述步驟:
步驟11:當(dāng)接收到調(diào)用請(qǐng)求后,應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類以APK插件中插件活動(dòng)組件類是否為空,判斷是否成功加載APK插件。
在調(diào)用插件功能之前,應(yīng)該先加載APK插件及其對(duì)應(yīng)的邏輯和資源,為了方便調(diào)用APK插件提供的功能,規(guī)避過多的使用反射機(jī)制,本發(fā)明將調(diào)用APK插件提供的功能抽象為兩個(gè)抽象父類。在本申請(qǐng)中,將應(yīng)用程序看作是安裝在系統(tǒng)平臺(tái)中的主程序。其中用于加載APK插件的主程序的抽象父類為調(diào)用插件活動(dòng)組件類(下文簡(jiǎn)稱CallPluginActivity),APK插件的抽象父類為插件活動(dòng)組件類(下文簡(jiǎn)稱PluginActivity)。CallPluginActivity和PluginActivity均為抽象類,需要子類實(shí)現(xiàn)其相應(yīng)的方法,因此本文后續(xù)描述的CallPluginActivity均也代表CallPluginActivity的實(shí)現(xiàn)類,PluginActivity均也代表PluginActivity的實(shí)現(xiàn)類,后面將不再贅述。
本實(shí)施例中,主程序作為調(diào)用插件的程序?yàn)橐呀?jīng)安裝的應(yīng)用程序。APK插件為已經(jīng)下載,可以作為插件調(diào)用,也可以和普通APK插件一樣正常安裝的Android應(yīng)用。主程序的抽象父類CallPluginActivity主要是為了向APK插件中的PluginActivity提供實(shí)例,即上下文Context,并加載APK插件。在本發(fā)明實(shí)施例的一個(gè)例子中,主程序的抽象父類的定義如圖2所示。其中,onCreate()方法由Android系統(tǒng)調(diào)用,用于發(fā)起對(duì)主程序的調(diào)用請(qǐng)求。getOtherResources()方法用于通過反射方法加載APK插件的資源并生成Resources句柄(變量名為:pluginRes)。CallPluginActivity通過判斷pluginActivity是否為空來確定是 否成功加載APK插件及其資源;如果判斷出pluginActivity不為空,則確定成功加載APK插件及其資源。
步驟12:當(dāng)加載成功APK插件時(shí),實(shí)例化APK插件中插件活動(dòng)組件類對(duì)應(yīng)的Activity。
如圖2所示,LoadAPK()方法用于生成DexClassLoader和PackageInfo等句柄及文件,并通過反射方法得到對(duì)應(yīng)的PluginActivity子類的實(shí)例畫(變量名為:pluginActivity),即實(shí)例化APK插件中PluginActivity對(duì)應(yīng)的Activity。
步驟13:APK插件中插件活動(dòng)組件類的子類以baseActivity是否為空,判斷是否由主程序以插件形式被調(diào)用。
APK插件的抽象父類的主要功能是完成APK插件的構(gòu)建和提供符合Android標(biāo)準(zhǔn)的Activity和Service等。在實(shí)施例中,APK插件的抽象父類的定義如圖3所示。其中,onCreate()方法由主程序調(diào)用,用于發(fā)起對(duì)APK插件的調(diào)用請(qǐng)求。setCallActivity()由主程序反射調(diào)用并設(shè)置自身的實(shí)例(pluginActivity)為APK插件的實(shí)例(baseActivity)。具體實(shí)現(xiàn)方法如下:
public void setCallActivity(CallPluginActivity baseActivity){
Log.d(TAG,"setActivity..."+baseActivity);
this.baseActivity=baseActivity;
}//由主程序反射調(diào)用并設(shè)置自身實(shí)例為插件的baseActivity變量。
所以,可以判斷baseActivity是否為空,如果判斷出baseActivity不為空,則確定本Activity是由主程序以插件的形式調(diào)用。
步驟14:當(dāng)確定APK插件以插件形式被主程序調(diào)用時(shí),主程序的調(diào)用插件活動(dòng)組件類的子類調(diào)用Activity的實(shí)例。
為了實(shí)現(xiàn)APK插件子類對(duì)應(yīng)的功能,需要在子類中重寫父類定義的方法。重寫以下方法使APK插件中的PluginActivity受主程序CallPluginActivity的控制,如:onStart、onResume方法,其他方法以此類推;以baseActivity變量是否為空來判斷PluginActivity是由主程序以插件形式啟動(dòng),還是以Android 正常啟動(dòng)(非插件調(diào)用的方式):
}//判斷baseActivity是否為空,若不為空則是插件形式調(diào)用;否則為系統(tǒng)默認(rèn)的方法。
以baseActivity變量是否為空來判斷PluginActivity是否由主程序以插件形式調(diào)用,如果是插件形式,則調(diào)用baseActivity對(duì)應(yīng)方法,正常啟動(dòng)(非插件調(diào)用的方式)則調(diào)用其父類對(duì)應(yīng)方法。也就是主程序通過主系統(tǒng)調(diào)用主程序?qū)?yīng)的方法,主程序調(diào)用插件對(duì)應(yīng)的方法。
所以在一種實(shí)施方式中,主程序的調(diào)用插件活動(dòng)組件類的子類調(diào)用Activity的實(shí)例,可以包括:檢測(cè)APK插件中是否存在Activity;
當(dāng)存在Activity時(shí),主程序的調(diào)用插件活動(dòng)組件類的子類以插件形式調(diào)用Activity的實(shí)例,以便通過Activity實(shí)例中的方法實(shí)現(xiàn)APK插件的功能。
當(dāng)不存在Activity時(shí),主程序的調(diào)用插件活動(dòng)組件類的子類以非插件形式調(diào)用Activity的父類方法,以便實(shí)現(xiàn)APK插件的功能。
在實(shí)際應(yīng)用中,為了能以插件的形式調(diào)用APK插件,當(dāng)不存在時(shí),再次實(shí)例化APK插件中插件活動(dòng)組件類對(duì)應(yīng)的Activity;主程序的調(diào)用插件活動(dòng)組件類的子類再次調(diào)用Activity的實(shí)例。
采用實(shí)施例1提供的該方法,主程序加載插件后,實(shí)例化APK插件中插件活動(dòng)組件類對(duì)應(yīng)的Activity;當(dāng)確定APK插件以插件形式被主程序調(diào)用,主程序的調(diào)用插件活動(dòng)組件類的子類調(diào)用Activity的實(shí)例,即通過主系統(tǒng)調(diào)用主程序?qū)?yīng)的方法,主程序調(diào)用插件對(duì)應(yīng)的方法,實(shí)現(xiàn)了插件的調(diào)用。跳過繁瑣 復(fù)雜的安裝步驟,只需加載插件后即可調(diào)用,從而實(shí)現(xiàn)插件的功能。
實(shí)施例2
基于相同的發(fā)明構(gòu)思,實(shí)施例2提供了一種調(diào)用應(yīng)用程序的APK插件的裝置,用于在不安裝插件的情況下,調(diào)用插件的功能。如圖4所示,該裝置包括:加載判斷單元21、實(shí)例化單元22、調(diào)用形式判斷單元23以及調(diào)用單元24,其中,
加載判斷單元21,可以用于當(dāng)接收到調(diào)用請(qǐng)求后,應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類以APK插件中插件活動(dòng)組件類是否為空,判斷是否成功加載APK插件;
實(shí)例化單元22,可以用于當(dāng)加載成功所述APK插件時(shí),實(shí)例化所述APK插件中插件活動(dòng)組件類對(duì)應(yīng)的Activity;
調(diào)用形式判斷單元23,可以用于所述APK插件中插件活動(dòng)組件類的子類以baseActivity是否為空,判斷是否由所述主程序以插件形式被調(diào)用;
調(diào)用單元24,可以用于當(dāng)確定所述APK插件以插件形式被所述應(yīng)用程序調(diào)用,應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類調(diào)用所述Activity的實(shí)例。
在一種實(shí)施方式中,調(diào)用單元24,可以用于:檢測(cè)所述APK插件中是否存在所述Activity;當(dāng)存在所述Activity時(shí),應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類以插件形式調(diào)用所述Activity的實(shí)例,以便通過Activity實(shí)例中的方法實(shí)現(xiàn)所述APK插件的功能。
在一種實(shí)施方式中,調(diào)用單元24,可以用于:當(dāng)不存在所述Activity時(shí),應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類以非插件形式調(diào)用所述Activity的父類方法,以便實(shí)現(xiàn)所述APK插件的功能。
在一種實(shí)施方式中,調(diào)用單元24,可以用于:當(dāng)不存在時(shí),再次實(shí)例化所述APK插件中插件活動(dòng)組件類對(duì)應(yīng)的Activity;應(yīng)用程序的調(diào)用插件活動(dòng)組件類的子類再次調(diào)用所述Activity的實(shí)例。
在一種實(shí)施方式中,調(diào)用形式判斷單元23,可以用于:所述APK插件中插件活動(dòng)組件類的子類判斷baseActivity是否為空;當(dāng)baseActivity不為空時(shí),確定所述APK插件以插件形式被所述應(yīng)用程序調(diào)用。
采用實(shí)施例2提供的該裝置,主程序加載插件后,實(shí)例化APK插件中插件活動(dòng)組件類對(duì)應(yīng)的Activity;當(dāng)確定APK插件以插件形式被主程序調(diào)用,主程序的調(diào)用插件活動(dòng)組件類的子類調(diào)用Activity的實(shí)例,即通過主系統(tǒng)調(diào)用主程序?qū)?yīng)的方法,主程序調(diào)用插件對(duì)應(yīng)的方法,實(shí)現(xiàn)了插件的調(diào)用。跳過繁瑣復(fù)雜的安裝步驟,只需加載插件后即可調(diào)用,從而實(shí)現(xiàn)插件的功能。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使 得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲(chǔ)器(SRAM)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、其他類型的隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)……”限定的要素,并不排除在包括要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件和 硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
以上僅為本申請(qǐng)的實(shí)施例而已,并不用于限制本申請(qǐng)。對(duì)于本領(lǐng)域技術(shù)人員來說,本申請(qǐng)可以有各種更改和變化。凡在本申請(qǐng)的精神和原理之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)的權(quán)利要求范圍之內(nèi)。