本申請涉及資源管理技術(shù),具體涉及一種根據(jù)系統(tǒng)配置選取資源的方法。本申請同時涉及一種根據(jù)系統(tǒng)配置選取資源的裝置。
背景技術(shù):
在電子設(shè)備上運(yùn)行的系統(tǒng)或者應(yīng)用程序通常會通過加載并顯示各種資源的方式向用戶展示信息,所述資源包括多種類型,例如:布局資源,圖片資源,字符串資源,尺寸資源等。為了使系統(tǒng)或者應(yīng)用程序在不同的設(shè)備、屏幕尺寸、國家地區(qū)、語言等系統(tǒng)配置下提供統(tǒng)一的視覺效果,提高代碼的復(fù)用性,經(jīng)常需要為一個資源準(zhǔn)備在不同系統(tǒng)配置下的具體資源,當(dāng)系統(tǒng)或者應(yīng)用程序在運(yùn)行時依據(jù)系統(tǒng)的當(dāng)前配置選擇與之匹配的具體資源進(jìn)行加載。其中,所述系統(tǒng)配置用于描述電子設(shè)備相關(guān)的狀態(tài)信息,通常包括預(yù)先設(shè)定的若干個配置項、及每個配置項的值,其中每一配置項的值不是固定不變的,而是隨著系統(tǒng)狀態(tài)發(fā)生變化。
例如,預(yù)先為某應(yīng)用程序的圖片資源預(yù)先存儲兩張圖片,分別對應(yīng)于白天和晚上,當(dāng)應(yīng)用程序在運(yùn)行過程中需要加載該圖片資源時,如果當(dāng)前系統(tǒng)配置中時間配置項的值為白天,就選擇其中對應(yīng)于白天、比較明亮的圖片加載,如果時間配置項的值為晚上,就選擇其中對應(yīng)于晚上、比較柔和的圖片加載。
為了實現(xiàn)上述目的,現(xiàn)有技術(shù)通常為需要加載資源的系統(tǒng)或者應(yīng)用程序、針對每種資源類型分別建立多個資源集合,每個資源集合對應(yīng)不同的配置組合,所述配置組合由若干個配置項以及每個配置項對應(yīng)的限定值組成,其中每個配置項都是系統(tǒng)配置中所包含的配置項。然后將各個具體資源放到相對應(yīng)的資源集合中,對于某個資源來說,存儲其具體資源的資源集合稱為該資源的宿主資源集合,也稱這些宿主資源集合包含該資源。
在大多數(shù)操作系統(tǒng)中,所述資源集合通常是指文件夾,而與文件夾對應(yīng)的配置組合信息可以包含在文件夾名稱中,對于文件型資源,例如圖片資源,可以直接將圖片文件存儲在對應(yīng)的文件夾(稱為宿主文件夾)中,對于數(shù)據(jù)型的 資源,例如字符串資源,可以將資源標(biāo)識與對應(yīng)的字符串值存儲在對應(yīng)文件夾中的數(shù)據(jù)資源文件中。
當(dāng)系統(tǒng)或者應(yīng)用程序每次加載資源時,往往都要執(zhí)行文件夾的查找操作,查看文件夾下是否有對應(yīng)的資源,然后根據(jù)具有對應(yīng)資源的宿主文件夾的配置組合信息,選擇與當(dāng)前系統(tǒng)配置相匹配的宿主文件夾中的相應(yīng)資源。例如,應(yīng)用程序需要加載圖片abc.png,通過執(zhí)行文件夾查找操作發(fā)現(xiàn)pic-land和pic-port這兩個文件夾下都有該圖片文件,隨后根據(jù)當(dāng)前系統(tǒng)配置進(jìn)行選擇,如果是橫屏則選擇pic-land目錄下的abc.png文件,否則選擇pic-prot目錄下的abc.png文件。
由此可見,按照現(xiàn)有方案,每當(dāng)系統(tǒng)或者應(yīng)用程序需要選取資源時,都需要執(zhí)行大量的查找資源集合的操作,操作過程復(fù)雜,效率低。特別是訪問文件夾的操作屬于io操作,有較大的時間開銷,影響系統(tǒng)或者應(yīng)用程序的運(yùn)行效率,也會影響用戶的使用體驗,如果采用高級語言(比如javascript)實現(xiàn)資源選取過程時,上述缺陷更為顯著,甚至導(dǎo)致系統(tǒng)或者應(yīng)用程序無法正常運(yùn)行。
技術(shù)實現(xiàn)要素:
本申請實施例提供一種根據(jù)系統(tǒng)配置選取資源的方法,以解決現(xiàn)有技術(shù)每次選取資源都需要執(zhí)行查找資源集合的操作、導(dǎo)致執(zhí)行效率低的問題。本申請實施例還提供一種根據(jù)系統(tǒng)配置選取資源的裝置。
本申請?zhí)峁┮环N根據(jù)系統(tǒng)配置選取資源的方法,包括:
根據(jù)待選取資源的標(biāo)識信息,查詢預(yù)先生成的資源與配置組合的對應(yīng)關(guān)系集合,獲取與所述待選取資源對應(yīng)的各配置組合;
從所述各配置組合中選擇與當(dāng)前系統(tǒng)配置相匹配的目標(biāo)配置組合;
根據(jù)所述待選取資源的標(biāo)識信息,選取與所述目標(biāo)配置組合對應(yīng)的資源集合中的相應(yīng)資源。
可選的,通過以下步驟預(yù)先生成所述資源與配置組合的對應(yīng)關(guān)系集合:
針對各種資源類型,遍歷與所述資源類型對應(yīng)的資源集合,為其中包含的各資源分別生成對應(yīng)關(guān)系表項,所述對應(yīng)關(guān)系表項中至少包含資源的標(biāo)識信息、以及所述資源的各宿主資源集合所對應(yīng)的配置組合;
用生成的對應(yīng)關(guān)系表項組成所述對應(yīng)關(guān)系集合。
可選的,在為數(shù)據(jù)型資源生成的對應(yīng)關(guān)系表項中,還包含所述資源對應(yīng)于其中每個配置組合的具體值;
當(dāng)所述待選取資源為數(shù)據(jù)型資源時,所述根據(jù)所述待選取資源的標(biāo)識信息,選取與所述目標(biāo)配置組合及待選取資源的資源類型對應(yīng)的資源集合中的相應(yīng)資源,包括:根據(jù)所述待選取資源的標(biāo)識信息,從所述對應(yīng)關(guān)系集合中提取相應(yīng)的對應(yīng)關(guān)系表項,并從中獲取與所述目標(biāo)配置組合相對應(yīng)的具體值。
可選的,所述從所述各配置組合中選擇與當(dāng)前系統(tǒng)配置相匹配的目標(biāo)配置組合,包括:從所述各配置組合中選擇與當(dāng)前系統(tǒng)配置最匹配的目標(biāo)配置組合。
可選的,所述從所述各配置組合中選擇與當(dāng)前系統(tǒng)配置最匹配的目標(biāo)配置組合,包括:
比較所述各配置組合的第一分?jǐn)?shù),并選擇第一分?jǐn)?shù)最高的配置組合作為所述目標(biāo)配置組合;
其中,所述第一分?jǐn)?shù)是根據(jù)相應(yīng)配置組合中各配置項的限定值與當(dāng)前系統(tǒng)配置中的相應(yīng)值是否相符計算得到的、用于表征所述配置組合與當(dāng)前系統(tǒng)配置匹配程度的分?jǐn)?shù)。
可選的,在比較所述各配置組合針對當(dāng)前系統(tǒng)配置的第一分?jǐn)?shù)之前,包括:
判斷是否已預(yù)先計算所述各配置組合的第一分?jǐn)?shù),若否,則計算所述各配置組合的第一分?jǐn)?shù)。
可選的,所述各配置組合中每個配置組合的第一分?jǐn)?shù)是通過如下步驟計算得到的:
將待計算的配置組合的第一分?jǐn)?shù)設(shè)置為第一初始值;
針對所述配置組合中的每個配置項,執(zhí)行以下操作:
若所述配置項的限定值與當(dāng)前系統(tǒng)配置中的相應(yīng)值相符,則在第一分?jǐn)?shù)上累加與所述配置項對應(yīng)的預(yù)設(shè)分值;若不相符,則將所述配置組合的第一分?jǐn)?shù)設(shè)置為預(yù)設(shè)的小于所述第一初始值的第二數(shù)值,并結(jié)束針對所述配置組合的計算過程。
可選的,所述每個配置項具有預(yù)設(shè)的優(yōu)先級,與每個配置項對應(yīng)的預(yù)設(shè)分值的高低與其優(yōu)先級高低成正比。
可選的,與每個配置項對應(yīng)的預(yù)設(shè)分值是采用如下公式計算得到的:
score=2^i;
其中,^代表冪運(yùn)算,i為相應(yīng)配置項在按照優(yōu)先級從低到高排序的配置項列表中的序號,score為計算得到的預(yù)設(shè)分值。
可選的,所述選擇第一分?jǐn)?shù)最高的配置組合作為所述目標(biāo)配置組合,包括:
選擇第一分?jǐn)?shù)最高的配置組合,作為候選配置組合;
判斷所述候選配置組合的數(shù)目是否大于1;
若是,比較各候選配置組合的第二分?jǐn)?shù),并選擇第二分?jǐn)?shù)最低的候選配置組合作為所述目標(biāo)配置組合;
若否,將所述候選配置組合作為所述目標(biāo)配置組合;
其中,所述第二分?jǐn)?shù)用于表征相應(yīng)候選配置組合的范圍匹配配置項與當(dāng)前系統(tǒng)配置的差異程度,所述范圍匹配配置項是指所述候選配置組合包含的、限定值為范圍形式、且與當(dāng)前系統(tǒng)配置的相應(yīng)值相符的配置項。
可選的,當(dāng)所述判斷所述候選配置組合的數(shù)目是否大于1的結(jié)果為是時,在所述比較各候選配置組合的第二分?jǐn)?shù)之前,包括:
判斷是否已預(yù)先計算出各候選配置組合的第二分?jǐn)?shù),若否則計算所述各候選配置組合的第二分?jǐn)?shù)。
可選的,所述各候選配置組合中的每個候選配置組合的第二分?jǐn)?shù),是通過如下步驟計算得到的:
將待計算的候選配置組合的第二分?jǐn)?shù)設(shè)置為第二初始值;
針對所述候選配置組合中的每個范圍匹配配置項,執(zhí)行以下操作:
根據(jù)所述范圍匹配配置項的限定值中的界限與當(dāng)前系統(tǒng)配置中相應(yīng)值的差值的絕對值,生成差異分值,并將所述差異分值累加到所述第二分?jǐn)?shù)上。
可選的,所述根據(jù)所述范圍匹配配置項的限定值中的界限與當(dāng)前系統(tǒng)配置中相應(yīng)值的差值的絕對值,生成差異分值,包括:
計算所述界限與當(dāng)前系統(tǒng)配置中相應(yīng)值的差值的絕對值;
計算所述差值的絕對值與對應(yīng)于所述范圍匹配配置項的優(yōu)先級因子的乘積,并將所述乘積作為所述差異分值;
其中,所述對應(yīng)于所述范圍匹配配置項的優(yōu)先級因子的大小與所述范圍匹 配配置項的優(yōu)先級高低成正比。
可選的,所述范圍匹配配置項的優(yōu)先級因子采用如下公式計算:
factor=max_diff^i;
其中,^代表冪運(yùn)算,max_diff為預(yù)設(shè)的最大差值,i為所述范圍匹配配置項在按照優(yōu)先級從低到高排序的配置項列表中的序號,factor為計算得到的優(yōu)先級因子。
可選的,所述待選取資源包括:文件型資源、或者數(shù)據(jù)型資源;所述文件型資源包括:布局資源、或者圖片資源,所述數(shù)據(jù)型資源包括:字符串資源、或者尺寸資源。
可選的,所述資源集合包括:文件夾。
可選的,在所述選取與所述目標(biāo)配置組合及待選取資源的資源類型對應(yīng)的資源集合中的相應(yīng)資源之后,還包括:
按照預(yù)設(shè)方式加載顯示所選取的資源。
相應(yīng)的,本申請還提供一種根據(jù)系統(tǒng)配置選取資源的裝置,包括:
配置組合獲取單元,用于根據(jù)待選取資源的標(biāo)識信息,查詢預(yù)先生成的資源與配置組合的對應(yīng)關(guān)系集合,獲取與所述待選取資源對應(yīng)的各配置組合;
目標(biāo)配置組合選擇單元,用于從所述各配置組合中選擇與當(dāng)前系統(tǒng)配置相匹配的目標(biāo)配置組合;
資源選取單元,用于根據(jù)所述待選取資源的標(biāo)識信息,選取與所述目標(biāo)配置組合對應(yīng)的資源集合中的相應(yīng)資源。
可選的,所述裝置包括:
對應(yīng)關(guān)系集合生成單元,用于在所述配置組合獲取單元工作之前,針對各種資源類型,遍歷與所述資源類型對應(yīng)的資源集合,為其中包含的各資源分別生成對應(yīng)關(guān)系表項,所述對應(yīng)關(guān)系表項中至少包含資源的標(biāo)識信息、以及所述資源的各宿主資源集合所對應(yīng)的配置組合;用生成的對應(yīng)關(guān)系表項組成所述對應(yīng)關(guān)系集合。
可選的,所述對應(yīng)關(guān)系集合生成單元生成的數(shù)據(jù)型資源的對應(yīng)關(guān)系表項中,還包含所述資源在相應(yīng)宿主資源集合中的具體值;
所述資源選取單元具體用于,當(dāng)所述待選取資源為數(shù)據(jù)型資源時,根據(jù)其 標(biāo)識信息,從所述對應(yīng)關(guān)系集合中提取相應(yīng)的對應(yīng)關(guān)系表項,并從中獲取與所述目標(biāo)配置組合相對應(yīng)的具體值。
可選的,所述目標(biāo)配置組合選擇單元,具體用于從所述配置組合獲取單元或取的各配置組合中選擇與當(dāng)前系統(tǒng)配置最匹配的目標(biāo)配置組合。
可選的,所述目標(biāo)配置組合選擇單元,具體用于比較所述各配置組合的第一分?jǐn)?shù),并選擇第一分?jǐn)?shù)最高的配置組合作為所述目標(biāo)配置組合。
可選的,所述裝置還包括:
第一分?jǐn)?shù)判斷單元,用于在觸發(fā)所述目標(biāo)配置組合選擇單元工作之前,判斷是否已預(yù)先計算所述各配置組合的第一分?jǐn)?shù),并在是時,觸發(fā)所述目標(biāo)配置組合選擇單元工作;
第一分?jǐn)?shù)計算單元,用于當(dāng)所述第一分?jǐn)?shù)判斷單元的輸出為否時,計算所述各配置組合的第一分?jǐn)?shù),并觸發(fā)所述目標(biāo)配置組合選擇單元工作。
可選的,所述第一分?jǐn)?shù)計算單元,包括:
循環(huán)控制子單元,用于針對所述各配置組合中的每個配置組合,依次觸發(fā)以下子單元以計算其第一分?jǐn)?shù);
第一分?jǐn)?shù)初始化子單元,用于將待計算的配置組合的第一分?jǐn)?shù)設(shè)置為第一初始值;
第一分?jǐn)?shù)計算執(zhí)行子單元,用于針對所述配置組合中的每個配置項,執(zhí)行以下操作:若所述配置項的限定值與當(dāng)前系統(tǒng)配置中的相應(yīng)值相符,則在第一分?jǐn)?shù)上累加與所述配置項對應(yīng)的預(yù)設(shè)分值;若不相符,則將所述配置組合的第一分?jǐn)?shù)設(shè)置為預(yù)設(shè)的小于所述第一初始值的第二數(shù)值,并結(jié)束針對所述配置組合的計算過程。
可選的,所述目標(biāo)配置組合選擇單元包括:
候選配置組合選擇子單元,用于比較所述各配置組合針對當(dāng)前系統(tǒng)配置的第一分?jǐn)?shù),并選擇第一分?jǐn)?shù)最高的配置組合,作為候選配置組合;
數(shù)目判斷子單元,用于判斷所述候選配置組合的數(shù)目是否大于1;
第一目標(biāo)配置組合選擇子單元,用于當(dāng)所述數(shù)目判斷子單元的輸出為是時,比較各候選配置組合的第二分?jǐn)?shù),并選擇第二分?jǐn)?shù)最低的候選配置組合作為所述目標(biāo)配置組合;
第二目標(biāo)配置組合選擇子單元,用于當(dāng)所述數(shù)目判斷子單元的輸出為否時,將所述候選配置組合選擇子單元所選的候選配置組合作為所述目標(biāo)配置組合。
可選的,所述目標(biāo)配置組合選擇單元還包括:
第二分?jǐn)?shù)判斷子單元,用于當(dāng)所述數(shù)目判斷子單元的輸出為是時,判斷是否已預(yù)先計算出各候選配置組合的第二分?jǐn)?shù),若是則觸發(fā)所述第一目標(biāo)配置組合選擇子單元工作;
第二分?jǐn)?shù)計算子單元,用于當(dāng)所述第二分?jǐn)?shù)判斷子單元的輸出為否時,計算所述各候選配置組合的第二分?jǐn)?shù),并觸發(fā)所述第一目標(biāo)配置組合選擇子單元工作。
可選的,所述第二分?jǐn)?shù)計算子單元,包括:
循環(huán)控制子單元,用于針對所述各候選配置組合中的每個候選配置組合,依次觸發(fā)以下子單元以計算其第二分?jǐn)?shù);
第二分?jǐn)?shù)初始化子單元,用于將待計算的候選配置組合的第二分?jǐn)?shù)設(shè)置為第二初始值;
第二分?jǐn)?shù)計算執(zhí)行子單元,用于針對所述候選配置組合中的每個范圍匹配配置項,執(zhí)行以下操作:根據(jù)所述范圍匹配配置項的限定值中的界限與當(dāng)前系統(tǒng)配置中相應(yīng)值的差值的絕對值,生成差異分值,并將所述差異分值累加到所述第二分?jǐn)?shù)上。
可選的,所述裝置包括:
資源加載顯示單元,用于在所述資源選取單元選取資源后,按照預(yù)設(shè)方式加載顯示所選取的資源。
與現(xiàn)有技術(shù)相比,本申請具有以下優(yōu)點(diǎn):
本申請?zhí)峁┑母鶕?jù)系統(tǒng)配置選取資源的方法,首先根據(jù)待選取資源的標(biāo)識信息,查詢預(yù)先生成的資源與配置組合的對應(yīng)關(guān)系集合,獲取與所述標(biāo)識信息對應(yīng)的各配置組合,然后從所述各配置組合中選擇與當(dāng)前系統(tǒng)配置相匹配的目標(biāo)配置組合,并根據(jù)所述待選取資源的標(biāo)識信息,選取與所述目標(biāo)配置組合及待選取資源的資源類型對應(yīng)的資源集合中的相應(yīng)資源。
采用本申請?zhí)峁┑纳鲜龇椒?,由于預(yù)先生成了資源與配置組合的對應(yīng)關(guān)系 集合,因此在每次選取資源的時候,查詢上述對應(yīng)關(guān)系即可快速獲知該資源的各宿主資源集合的配置組合信息,大大減少了查找資源集合的操作,從而可以提高資源選取的速度以及系統(tǒng)的性能,在所述資源集合為文件夾時,因為大量減少io操作,效果更為顯著。
附圖說明
圖1是本申請的一種根據(jù)系統(tǒng)配置選取資源的方法實施例的流程圖;
圖2是本申請實施例提供的根據(jù)第一分?jǐn)?shù)選取目標(biāo)配置組合的處理流程圖;
圖3是本申請實施例提供的根據(jù)第一分?jǐn)?shù)和第二分?jǐn)?shù)選取目標(biāo)配置組合的處理流程圖;
圖4是本申請的一種根據(jù)系統(tǒng)配置選取資源的裝置的實施例的示意圖。
具體實施方式
在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本申請。但是,本申請能夠以很多不同于在此描述的其它方式來實施,本領(lǐng)域技術(shù)人員可以在不違背本申請內(nèi)涵的情況下做類似推廣,因此,本申請不受下面公開的具體實施的限制。
在本申請中,分別提供了一種根據(jù)系統(tǒng)配置選取資源的方法,以及一種根據(jù)系統(tǒng)配置選取資源的裝置。在下面的實施例中逐一進(jìn)行詳細(xì)說明。
本申請技術(shù)方案的核心在于:預(yù)先對某一應(yīng)用程序或者系統(tǒng)的各個資源集合中的資源進(jìn)行歸類,生成資源與配置組合的對應(yīng)關(guān)系集合,當(dāng)應(yīng)用程序或者系統(tǒng)需要選擇某個資源時,可以從預(yù)先生成的上述對應(yīng)關(guān)系集合中,選擇出與所述資源對應(yīng)的各個配置組合,并根據(jù)其中與當(dāng)前系統(tǒng)配置相匹配的目標(biāo)配置組合選取對應(yīng)的資源。采用上述資源選取方案,不需要執(zhí)行查找資源集合的操作,從而可以提高資源選取的速度以及系統(tǒng)的性能。
所述資源集合是指存儲資源的集合,在大多數(shù)操作系統(tǒng)中,所述資源集合通常是指文件夾,由于查找文件夾的操作屬于io操作,通常比較耗時,因此采用本申請技術(shù)方案的有益效果更為顯著。為了便于理解,在以下實施例中以資源集合為文件夾為例,描述采用本申請的技術(shù)方案為某一應(yīng)用程序選取資源的 具體實施方式。
在實施本技術(shù)方案時,通常需要通過預(yù)處理操作生成資源與配置組合的對應(yīng)關(guān)系集合,下面先對這一過程進(jìn)行說明。所述對應(yīng)關(guān)系集合由若干個對應(yīng)關(guān)系表項組成,每個表項中至少包含資源的標(biāo)識信息,以及所述資源的各宿主資源集合所對應(yīng)的配置組合。
其中,資源的標(biāo)識信息是指用于區(qū)分不同資源的信息,對于文件型資源,可以用文件名稱作為標(biāo)識信息,例如:layout1.png,對于數(shù)據(jù)型資源,可以用資源名稱作為標(biāo)識信息,例如string1。
通常應(yīng)用程序所需要的資源都存儲在一個預(yù)設(shè)目錄下,例如:res目錄下,而在該目錄下通常有多個文件夾,每個文件夾與資源類型以及配置組合的對應(yīng)關(guān)系可以記錄在文件中,也可以體現(xiàn)在文件夾的名稱中,例如:文件夾的名稱采用如下命名方式:資源類型-配置項1及限定值-配置項2及限定值-......-配置項n及限定值。其中,所述資源類型通常包括:布局資源、圖片資源、字符串資源、或者尺寸資源等,在上述列舉的資源類型中,前兩者屬于文件型資源,后兩者屬于數(shù)據(jù)型資源。配置項1至n通常是系統(tǒng)配置中的各個不同維度,例如:橫/豎屏、屏幕尺寸等,配置項1及限定值、配置項2及限定值、......、配置項n及限定值,組成了本申請所述的配置組合,即:配置組合由若干個配置項以及每個配置項對應(yīng)的限定值組成。
各種具體資源都存儲在相應(yīng)的文件夾下,通常將布局資源、圖片資源等這種文件型資源直接存儲在對應(yīng)的文件夾下面。而對于字符串或者尺寸等數(shù)據(jù)型的資源通常統(tǒng)一存儲在相應(yīng)文件夾下面的一個數(shù)據(jù)資源文件中,以javascript為例,對于字符串資源,通常存放在一個string.js文件中,其中以key-value的形式包含了需要放到相應(yīng)文件夾下的所有字符串資源,其中key通常是字符串資源的標(biāo)識信息,value則是具體的字符串,即:與所述字符串資源對應(yīng)的具體值。
為了便于理解,給出一個具體的例子,系統(tǒng)配置包含三個配置項,分別記為a、b和c,資源包含兩種:布局資源和字符串資源。在應(yīng)用程序的res目錄下,設(shè)置名稱如下所示的6個文件夾:layout-a1-b1-c1、layout-b2-c2、layout、string-a1-b1-c1、string-b2-c2、string,其中,layout-b2-c2中配置項a為空,代表該文件夾中的具體資源適用于配置項a的所有可能取值,即,該文件夾下的具體資源在該維度上與系統(tǒng)配置是相符的、相匹配的。對于layout、string-b2-c2, string也是同樣的含義,不再贅述。通常將layout文件和string文件夾對應(yīng)的配置組合稱為默認(rèn)配置組合。
在采用上述方式存儲資源的基礎(chǔ)上,可以通過預(yù)處理操作收集資源信息,生成資源與配置組合的對應(yīng)關(guān)系集合。所述預(yù)處理操作可以是應(yīng)用程序啟動過程中執(zhí)行,也可以是承載所述應(yīng)用程序的系統(tǒng)在應(yīng)用程序未啟動時執(zhí)行,該過程針對每個應(yīng)用程序只需要執(zhí)行一次,一旦生成了資源與配置組合的對應(yīng)關(guān)系集合,每當(dāng)應(yīng)用程序需要選取資源時,就可以在查找該對應(yīng)關(guān)系的基礎(chǔ)上快速地完成所需功能。
通過預(yù)處理生成資源與配置組合的對應(yīng)關(guān)系集合,其實現(xiàn)方式可以為:針對各種資源類型,遍歷與所述資源類型對應(yīng)的資源集合,為其中包含的各資源分別生成對應(yīng)關(guān)系表項,所述對應(yīng)關(guān)系表項中至少包含資源的標(biāo)識信息、以及所述資源的各宿主資源集合所對應(yīng)的配置組合;并用生成的對應(yīng)關(guān)系表項組成所述對應(yīng)關(guān)系集合。
仍沿用上面給出的具體例子,可以先遍歷與布局資源相關(guān)的三個文件夾layout-a1-b1-c1、layout-b2-c2、layout,收集各個文件夾下包含哪些布局資源,并生成各布局資源與宿主文件夾所對應(yīng)的配置組合之間的對應(yīng)關(guān)系,例如:layout、layout-a1-b1-c1文件夾都包含布局資源layout1.png,即:這兩個文件夾中都存儲了名稱為layout1.png的具體布局文件,則可以生成資源layout1.png與默認(rèn)配置組合、a1-b1-c1這兩種配置組合的對應(yīng)關(guān)系表項,所述對應(yīng)關(guān)系表項可以采用key-value的形式記錄,其中key是資源的標(biāo)識,value是一個數(shù)組(也可以是其他數(shù)據(jù)結(jié)構(gòu)),數(shù)組的每一項是對應(yīng)的配置組合,在本例子中針對layout1.png生成的所述對應(yīng)關(guān)系表項可以表示為layout1.png:[默認(rèn)配置組合,a1-b1-c1]。
同樣的道理,可以遍歷與字符串資源相關(guān)的三個文件夾,得到各字符串資源與宿主文件夾所對應(yīng)的配置組合之間的對應(yīng)關(guān)系,并生成對應(yīng)關(guān)系表項,同樣可以采用key-value的形式記錄,key為字符串資源的標(biāo)識,value是相應(yīng)的配置組合列表。
優(yōu)選地,對于數(shù)據(jù)型資源(例如字符串資源、或者尺寸資源),在生成對應(yīng)關(guān)系表項時,不僅可以包含所述資源的標(biāo)識信息以及所述資源的各宿主資源集合所對應(yīng)的配置組合,還可以包含所述數(shù)據(jù)型資源對應(yīng)于其中每個配置組合的 具體值,即:所述數(shù)據(jù)型資源在每個配置組合對應(yīng)的宿主資源集合中存儲的具體值,例如,數(shù)據(jù)串資源string1的對應(yīng)關(guān)系表項的形式可以為,string1:[默認(rèn)配置組合:hello,a1-b1-c1:你好]。采用這種方式可以進(jìn)一步加快對數(shù)據(jù)型資源的選取速度。
采用上述方式生成各資源與配置組合的對應(yīng)關(guān)系表項,并由這些表項共同組成本申請所述的資源與配置組合的對應(yīng)關(guān)系集合。上面給出了生成對應(yīng)關(guān)系集合的實施方式,在具體實施時,也可以采用其他方式,只要能夠生成各資源與配置組合的對應(yīng)關(guān)系集合就都是可以的。此外,在預(yù)處理過程中還可以記錄資源的標(biāo)識信息與資源類型的對應(yīng)關(guān)系。
生成所述對應(yīng)關(guān)系集合后,就可以采用本申請?zhí)峁┑母鶕?jù)系統(tǒng)配置選取資源的方法,從而實現(xiàn)對資源的快速選取。下面通過實施例對所述方法的具體實施方式進(jìn)行詳細(xì)說明。
請參考圖1,其為本申請的一種根據(jù)系統(tǒng)配置選取資源的方法實施例的流程圖。所述方法包括如下步驟:
步驟101、根據(jù)待選取資源的標(biāo)識信息,查詢預(yù)先生成的資源與配置組合的對應(yīng)關(guān)系集合,獲取與所述待選取資源對應(yīng)的各配置組合。
由于預(yù)先生成了資源與配置組合的對應(yīng)關(guān)系集合,因此不需要執(zhí)行文件夾的查找操作,可以根據(jù)待選取資源的標(biāo)識信息,查詢所述對應(yīng)關(guān)系集合,提取針對所述待選取資源的對應(yīng)關(guān)系表項,并讀取其中的配置組合信息,即獲取了與所述待選取資源對應(yīng)的各配置組合。
在具體實施,由于所述對應(yīng)關(guān)系集合中的表項通常是采用key-value形式記錄的,因此可以用所述標(biāo)識信息作為key,查詢對應(yīng)的value,從而得到與所述待選取資源對應(yīng)的各配置組合。
步驟102、從所述各配置組合中選擇與當(dāng)前系統(tǒng)配置相匹配的目標(biāo)配置組合。
通常可以通過系統(tǒng)提供的接口,獲取當(dāng)前系統(tǒng)配置,即得到系統(tǒng)配置中各個配置項的值,然后可以針對步驟101獲取的每個配置組合,執(zhí)行如下操作:用當(dāng)前處理的配置組合的各配置項的限定值與當(dāng)前系統(tǒng)配置中的相應(yīng)值進(jìn)行比較,其中只要有一項限定值與當(dāng)前系統(tǒng)配置中的相應(yīng)值不相符,則認(rèn)為該配置組合與當(dāng)前系統(tǒng)配置不匹配。通過上述比較過程即可選出與當(dāng)前系統(tǒng)配置匹配 的配置組合,作為所述目標(biāo)配置組合。
優(yōu)選地,考慮到與當(dāng)前系統(tǒng)配置相匹配的配置組合可能有多個,而選取資源通常是為了在顯示設(shè)備上顯示,為了獲得更好的展示效果,為用戶提供更好的視覺體驗,本步驟可以從各配置組合中選擇與當(dāng)前系統(tǒng)配置最為匹配的目標(biāo)配置組合。具體實施時,可以通過比較與當(dāng)前系統(tǒng)配置相符合的配置項的個數(shù),選擇出最為匹配的目標(biāo)配置組合。例如:配置組合1和配置組合2都與當(dāng)前系統(tǒng)配置匹配,但是配置組合1有三個配置項相符,配置組合2僅有1個配置項相符,那么可以認(rèn)為配置組合1與當(dāng)前系統(tǒng)配置最為匹配,可以將其作為目標(biāo)配置組合。
如果采用傳統(tǒng)的資源選取方式,需要遍歷資源文件夾才能得到與待選取資源對應(yīng)的各配置組合,并從中選擇最為匹配的目標(biāo)配置組合;而采用本申請的技術(shù)方案,直接查詢預(yù)先生成的對應(yīng)關(guān)系集合即可獲取與待選取資源對應(yīng)的各配置組合,由于大大減少了對文件夾的操作,可以顯著提高資源的選取速度,提高執(zhí)行效率。
進(jìn)一步優(yōu)選地,本實施例還提供為所述各配置組合計算分?jǐn)?shù)、并根據(jù)分?jǐn)?shù)選擇最匹配的目標(biāo)配置組合的優(yōu)選實施方式:比較所述各配置組合的第一分?jǐn)?shù),并選擇第一分?jǐn)?shù)最高的配置組合作為所述目標(biāo)配置組合;其中,所述第一分?jǐn)?shù)是根據(jù)相應(yīng)配置組合中各配置項的限定值與當(dāng)前系統(tǒng)配置的相應(yīng)值是否相符計算得到的、用于表征所述配置組合與當(dāng)前系統(tǒng)配置匹配程度的分?jǐn)?shù),并且分?jǐn)?shù)越高、匹配程度也相應(yīng)越高。采用這種優(yōu)選實施方式,相當(dāng)于通過計算分?jǐn)?shù)的方式將配置組合與當(dāng)前系統(tǒng)配置的匹配程度進(jìn)行了量化,從而使得選取目標(biāo)配置組合的過程更為清晰、簡潔。
所述各配置組合的第一分?jǐn)?shù)可以是已經(jīng)預(yù)先計算出來的、也可能尚未計算,因此在進(jìn)行比較之前可以先進(jìn)行判斷,如果尚未計算則先計算各配置組合的第一分?jǐn)?shù),然后再執(zhí)行比較操作。下面結(jié)合圖2對處理流程進(jìn)行描述。
步驟102-1、判斷是否已預(yù)先計算所述各配置組合的第一分?jǐn)?shù),若是直接轉(zhuǎn)到步驟102-3執(zhí)行,否則執(zhí)行步驟102-2。
所述各配置組合的第一分?jǐn)?shù)可以在執(zhí)行本步驟之前預(yù)先計算得到,例如:應(yīng)用程序可以在啟動時,或者,在接收到系統(tǒng)配置變化的廣播消息時,已經(jīng)根據(jù)當(dāng)時的系統(tǒng)配置計算出了對應(yīng)于所述各配置組合的第一分?jǐn)?shù),并存儲了所述 第一分?jǐn)?shù),并且在計算所述第一分?jǐn)?shù)后系統(tǒng)配置沒有發(fā)生變化,那么本步驟的判斷結(jié)果為是,可以直接執(zhí)行步驟102-3進(jìn)行分?jǐn)?shù)比較;如果所述各配置組合針對當(dāng)前系統(tǒng)配置的第一分?jǐn)?shù)尚未計算,那么本步驟執(zhí)行步驟102-2計算所述各配置組合的第一分?jǐn)?shù)。
步驟102-2、計算所述各配置組合的第一分?jǐn)?shù)。
各配置組合的第一分?jǐn)?shù),用于表征相應(yīng)配置組合與當(dāng)前系統(tǒng)配置的匹配程度,通常分?jǐn)?shù)越高、匹配程度也相應(yīng)越高。因此本步驟可以針對其中每個配置組合,根據(jù)各配置項的限定值與當(dāng)前系統(tǒng)配置的相應(yīng)值是否相符計算所述第一分?jǐn)?shù)。
此處給出計算配置組合的第一分?jǐn)?shù)的一種具體方法:
將待計算的配置組合的第一分?jǐn)?shù)設(shè)置為第一初始值;針對所述配置組合中的每個配置項,執(zhí)行以下操作:若所述配置項的限定值與當(dāng)前系統(tǒng)配置中的相應(yīng)值相符,則在第一分?jǐn)?shù)上累加與所述配置項對應(yīng)的預(yù)設(shè)分值;若不相符,則將所述配置組合的第一分?jǐn)?shù)設(shè)置為預(yù)設(shè)的小于所述第一初始值的第二數(shù)值,并結(jié)束針對所述配置組合的計算過程。
在具體實施時,所述第一初始值可以設(shè)置為0,所述第二數(shù)值可以設(shè)置為負(fù)數(shù)值,例如-1,每個配置項對應(yīng)的預(yù)設(shè)分值可以是相同的。下面以默認(rèn)配置組合、配置組合a1-b1-c1、配置組合b2-c2為例進(jìn)行說明,其中每個配置項的預(yù)設(shè)分值為5,當(dāng)前系統(tǒng)配置為a1-b1-c1,那么對于配置組合a1-b1-c1,由于其中各個配置項的限定值與系統(tǒng)配置都相符,因此第一分?jǐn)?shù)為5+5+5=15,對于配置組合b2-c2,由于存在與系統(tǒng)配置不相符的配置項,因此第一分?jǐn)?shù)為預(yù)設(shè)的第二數(shù)值值-1,而默認(rèn)配置組合的第一分?jǐn)?shù)為0。
優(yōu)選地,由于各配置組合包含的配置項都對應(yīng)于系統(tǒng)配置中的配置項,而系統(tǒng)配置的各配置項可能具有不同的優(yōu)先級,體現(xiàn)其對資源選取所起作用的大小。本實施例提供在配置項具有不同優(yōu)先級的情況下,根據(jù)配置項的優(yōu)先級計算并設(shè)置相應(yīng)預(yù)設(shè)分值的優(yōu)選實施方式。
在具體應(yīng)用中,系統(tǒng)配置中的各個配置項代表的含義不同,對于選取資源所起到的作用也可能不同。例如,可以設(shè)置配置項“mcc和mnc”(移動國家碼和移動網(wǎng)絡(luò)碼)比配置項“語言和地區(qū)”的優(yōu)先級高,那么如果對于同一資源,其具體資源1對應(yīng)的“mcc和mnc”與系統(tǒng)配置相匹配,具體資源2對 應(yīng)的“語言和地區(qū)”與系統(tǒng)配置相匹配,在其他配置項與系統(tǒng)匹配狀況相同的情況下,通常會選擇“mcc和mnc”與系統(tǒng)配置相匹配的那個具體資源。
為了實現(xiàn)上述資源選取效果,可以根據(jù)系統(tǒng)配置包含的每個配置項的優(yōu)先級,計算每個配置項的預(yù)設(shè)分值,并且預(yù)設(shè)分值的高低與其優(yōu)先級高低成正比,這樣可以差異化地體現(xiàn)不同配置項在資源選取中的作用。
在上述基于優(yōu)先級設(shè)置預(yù)設(shè)分值的基礎(chǔ)上,可以采用如下公式計算與每個配置項對應(yīng)的預(yù)設(shè)分值:score=2^i;
其中,^代表冪運(yùn)算,i為相應(yīng)配置項在按照優(yōu)先級從低到高排序的配置項列表中的序號,score為計算得到的預(yù)設(shè)分值。
例如,a、b、c三個配置項,優(yōu)先級關(guān)系為a高于b,b高于c,按照優(yōu)先級從低到高排序得到的列表為c、b、a,分別對應(yīng)序號0、1、2,因此配置項c的預(yù)設(shè)分值為2^0=1,配置項b的預(yù)設(shè)分值為2^1=2,配置項a的預(yù)設(shè)分值為2^2=4,那么如果當(dāng)前系統(tǒng)配置為:a1-b1-c1,那么默認(rèn)配置組合的第一分?jǐn)?shù)是0、配置組合a1-b1-c1的第一分?jǐn)?shù)是4+2+1=7、配置組合b2-c2的第一分?jǐn)?shù)是-1。
利用以2為底的冪運(yùn)算計算各個配置組合的第一分?jǐn)?shù),使得優(yōu)先級高的配置項對于選取資源的影響力可以大于優(yōu)先級低的各個配置項的總和,能夠更加準(zhǔn)確地體現(xiàn)配置項優(yōu)先級在資源選取中的作用。
在配置項具有不同優(yōu)先級的情況下,如果采用傳統(tǒng)的資源選取方法,在通過遍歷文件夾獲取與待選取資源對應(yīng)的各配置組合后,需要根據(jù)配置項的優(yōu)先級設(shè)置從高到低逐一判斷哪個配置組合更匹配當(dāng)前的系統(tǒng)配置,處理過程繁瑣,效率低下。而采用上述優(yōu)選實施方式,通過預(yù)設(shè)分值將配置項的優(yōu)先級特征量化,并根據(jù)在此基礎(chǔ)上計算得到的各配置組合的第一分?jǐn)?shù)選擇目標(biāo)配置組合,能夠簡化處理過程,提高執(zhí)行效率。
上面列舉了計算各配置組合的第一分?jǐn)?shù)的各種方式,在具體實施時,可以根據(jù)需要選擇相應(yīng)的方式,例如:各配置項不具有優(yōu)先級設(shè)置時,可以采用相同預(yù)設(shè)分值的計算方案,各配置項具有優(yōu)先級設(shè)置時,可以采用根據(jù)優(yōu)先級計算并設(shè)置預(yù)設(shè)分值的優(yōu)選實施方式。需要說明的是,對于預(yù)先計算各配置組合的第一分?jǐn)?shù)的實施方式,也可以采用上述計算方式。
步驟102-3、比較所述各配置組合的第一分?jǐn)?shù),并選擇第一分?jǐn)?shù)最高的配置組合作為所述目標(biāo)配置組合。
執(zhí)行到本步驟,說明已經(jīng)計算出了各配置組合針對當(dāng)前系統(tǒng)配置的第一分?jǐn)?shù),本步驟通過比較,從中選擇第一分?jǐn)?shù)最高的配置組合,即:與當(dāng)前系統(tǒng)配置最為匹配的配置組合,并將該配置組合作為所述目標(biāo)配置組合。此后,可以執(zhí)行步驟103根據(jù)目標(biāo)配置組合選取相應(yīng)的資源。
需要說明的是,上述給出了計算各配置組合的第一分?jǐn)?shù)、并選擇第一分?jǐn)?shù)最高的配置組合作為目標(biāo)配置組合的優(yōu)選實施方式。本領(lǐng)域技術(shù)人員應(yīng)該理解,在具體實施時,可以在上述實施方式基礎(chǔ)上進(jìn)行各種變更,也就是說,可以采用不同的方式計算各配置組合的第一分?jǐn)?shù),并選擇第一分?jǐn)?shù)滿足預(yù)設(shè)要求的配置組合作為目標(biāo)配置組合,例如:可以在計算第一分?jǐn)?shù)時采用減少預(yù)設(shè)分值的方式、并選擇第一分?jǐn)?shù)最低的配置組合作為目標(biāo)配置組合。這些都屬于選擇目標(biāo)配置組合的具體實施方式的變更,都在本申請的保護(hù)范圍之內(nèi)。
在選擇第一分?jǐn)?shù)最高的配置組合作為目標(biāo)配置組合的實施方式中,分?jǐn)?shù)最高的配置組合可能有兩個或者兩個以上,在這種情況下,可以任意選擇一個作為所述目標(biāo)配置組合。
優(yōu)選地,當(dāng)?shù)谝环謹(jǐn)?shù)最高的配置組合不止一個時,本實施例還提供根據(jù)范圍匹配配置項計算第二分?jǐn)?shù)、并根據(jù)第二分?jǐn)?shù)選擇目標(biāo)配置組合的優(yōu)選實施方式,從而可以在有多個第一分?jǐn)?shù)最高的配置組合的情況下,根據(jù)范圍匹配狀況進(jìn)一步從中選出與當(dāng)前系統(tǒng)配置最為匹配的配置組合作為所述目標(biāo)配置組合。其中,第一分?jǐn)?shù)最高的配置組合稱為候選配置組合。
所述范圍匹配配置項是指候選配置組合包含的、其限定值為范圍形式、且與當(dāng)前系統(tǒng)配置的相應(yīng)值相符的配置項。例如:某一候選配置組合包含寬度配置項,其限定值為大于等于512(也可以描述為最小寬度512),512為該限定值中的界限;另一個候選配置組合也包含寬度配置項,其限定值為大于等于1024(也可以描述為最小寬度1024),1024為該限定值中的界限;如果當(dāng)前系統(tǒng)配置中的寬度值為1024,那么這兩個候選配置組合中的寬度配置項都與系統(tǒng)配置相符,都是相應(yīng)候選配置組合中的范圍匹配配置項。
不難看出,雖然上述兩個候選配置組合的寬度配置項與系統(tǒng)配置都相符,但是相符程度存在一定差異,限定值界限為1024的配置項的匹配程度更高?;谏鲜隹紤],可以通過計算表征候選配置組合的范圍匹配配置項與當(dāng)前系統(tǒng)配置的差異程度的第二分?jǐn)?shù)、并比較第二分?jǐn)?shù)的方式,選出匹配程度最高的(即, 與當(dāng)前系統(tǒng)配置最為匹配的)目標(biāo)配置組合,通常第二分?jǐn)?shù)越高代表差異程度越大,因此可以選擇第二分?jǐn)?shù)最低的候選配置組合作為所述目標(biāo)配置組合。
在此基礎(chǔ)上,步驟102-3可以進(jìn)一步細(xì)化為以下步驟102-3-1至102-3-6,下面結(jié)合圖3對各個步驟作進(jìn)一步說明。
步驟102-3-1、比較所述各配置組合的第一分?jǐn)?shù),并選擇第一分?jǐn)?shù)最高的配置組合,作為候選配置組合。
步驟101獲取的各配置組合的第一分?jǐn)?shù)已經(jīng)計算得出,本步驟通過比較,從中選擇第一分?jǐn)?shù)最高的配置組合,作為候選配置組合。
步驟102-3-2、判斷所述候選配置組合的數(shù)目是否大于1;若是,執(zhí)行步驟102-3-3,否則執(zhí)行步驟102-3-6。
步驟102-3-3、判斷是否已預(yù)先計算出各候選配置組合的第二分?jǐn)?shù);若是則執(zhí)行步驟102-3-5,否則執(zhí)行步驟102-3-4。
與第一分?jǐn)?shù)類似,所述各候選配置組合的第二分?jǐn)?shù)可以是預(yù)先計算得到的,例如在應(yīng)用程序啟動時或者接收到系統(tǒng)配置變更通知時已計算得出,也可能尚未計算。因此本步驟對此進(jìn)行判斷,如果已經(jīng)預(yù)先計算出各候選配置組合的第二分?jǐn)?shù)則執(zhí)行步驟102-3-5進(jìn)行比較,否則執(zhí)行步驟102-3-4進(jìn)行計算。
步驟102-3-4、計算所述各候選配置組合的第二分?jǐn)?shù)。
各候選配置組合的第二分?jǐn)?shù)用于表征相應(yīng)候選配置組合的范圍匹配配置項與當(dāng)前系統(tǒng)配置的差異程度,分?jǐn)?shù)越高、差異程度也相應(yīng)越高。因此本步驟可以針對其中每個候選配置組合,根據(jù)各范圍匹配配置項的限定值界限與當(dāng)前系統(tǒng)配置的相應(yīng)值的差異計算所述第二分?jǐn)?shù)。
此處給出計算候選配置組合的第二分?jǐn)?shù)的一種具體方法:
將待計算的候選配置組合的第二分?jǐn)?shù)設(shè)置為第二初始值;針對所述候選配置組合中的每個范圍匹配配置項,執(zhí)行以下操作:根據(jù)所述范圍匹配配置項的限定值中的界限與當(dāng)前系統(tǒng)配置中相應(yīng)值的差值的絕對值,生成差異分值,并將計算得到的差異分值累加到所述第二分?jǐn)?shù)上。
在具體實施時,所述第二初始值可以設(shè)置為0,在生成所述差異分值時,可以直接用已計算得到的絕對值作為所述差異分值。
優(yōu)選地,考慮到范圍匹配配置項都對應(yīng)于系統(tǒng)配置中的配置項,而系統(tǒng)配置中的各個配置項可能具有不同的優(yōu)先級,體現(xiàn)其對資源選取所起作用的大小。 本實施例提供在配置項具有不同優(yōu)先級的情況下,根據(jù)各范圍匹配配置項的優(yōu)先級因子計算差異分值的優(yōu)選實施方式,從而能夠差異化地體現(xiàn)不同配置項在資源選取中的作用。
采用上述優(yōu)選實施方式,所述根據(jù)所述范圍匹配配置項的限定值中的界限與當(dāng)前系統(tǒng)配置中相應(yīng)值的差值,生成差異分值,包括:計算所述界限與當(dāng)前系統(tǒng)配置中相應(yīng)值的差值的絕對值;計算所述差值的絕對值與對應(yīng)于所述范圍匹配配置項的優(yōu)先級因子的乘積,并將所述乘積作為所述差異分值;其中,所述對應(yīng)于所述范圍匹配配置項的優(yōu)先級因子的大小與所述范圍匹配配置項的優(yōu)先級高低成正比。
所述優(yōu)先級因子可以采用如下公式計算:factor=max_diff^i;
其中,^代表冪運(yùn)算,max_diff為預(yù)設(shè)的最大差值,i為所述范圍匹配配置項在按照優(yōu)先級從低到高排序的配置項列表中的序號,factor為計算得到的優(yōu)先級因子。
例如,某候選配置組合包含:寬度配置項,其限定值為大于等于512,當(dāng)前系統(tǒng)配置中的寬度配置項的值為1024,預(yù)設(shè)的最大差值為10000,寬度配置項在按照優(yōu)先級從低到高排序的配置項列表中的序號為3,那么所述寬度配置項的差異分值為:|1024-512|*(10000^3)。
在具體實施時,也可以在計算出限定值中的界限與當(dāng)前系統(tǒng)配置中相應(yīng)值的差值的絕對值后,先判斷該差值的絕對值是否已大于預(yù)設(shè)的最大差值,若大于,則可以直接將當(dāng)前計算的候選配置組合的第二分?jǐn)?shù)設(shè)置為可能取值中的最大值,并結(jié)束對所述候選配置組合的第二分?jǐn)?shù)的計算過程。
步驟102-3-5、比較各候選配置組合的第二分?jǐn)?shù),并選擇第二分?jǐn)?shù)最低的候選配置組合作為所述目標(biāo)配置組合。
對于各候選配置組合來說,第二分?jǐn)?shù)越低說明其與當(dāng)前系統(tǒng)配置的差異程度越小,因此本步驟選擇第二分?jǐn)?shù)最低的候選配置組合作為所述目標(biāo)配置組合,從而完成對目標(biāo)配置組合的選擇操作。
步驟102-3-6、將所述候選配置組合作為所述目標(biāo)配置組合。
執(zhí)行到本步驟,說明第一分?jǐn)?shù)最高的配置組合只有一個,因此可以直接將該配置組合作為所述目標(biāo)配置組合。
步驟103、根據(jù)所述待選取資源的標(biāo)識信息,選取與所述目標(biāo)配置組合對應(yīng) 的資源集合中的相應(yīng)資源。
執(zhí)行步驟102后,已經(jīng)選取了與當(dāng)前系統(tǒng)配置相匹配的目標(biāo)配置組合,本步驟可以從與所述目標(biāo)配置組合對應(yīng)的文件夾中,選取所需資源。
在具體實施中,可以根據(jù)所述待選取資源的標(biāo)識信息,在對應(yīng)于目標(biāo)配置組合的各資源集合中查找并選取相應(yīng)資源。由于在確定所述目標(biāo)配置組合時,利用了預(yù)先生成的資源與配置組合的對應(yīng)關(guān)系集合,因此大大減少了資源集合的查找操作,提高資源選取的速度。
此外,本步驟也可以根據(jù)待選取資源的標(biāo)識信息,選取與所述目標(biāo)配置組合及待選取資源的資源類型對應(yīng)的資源集合中的相應(yīng)資源。采用這種方式,可以進(jìn)一步減少對資源集合的查找操作、提高資源選取的速度。
例如,待選取資源為文件型資源,其標(biāo)識信息為:layout1.png,步驟102選取的目標(biāo)配置組合為a1-b1-c1,根據(jù)標(biāo)識信息中包含的資源類型指示信息、或者根據(jù)在預(yù)處理過程中記錄的資源標(biāo)識信息與資源類型的對應(yīng)關(guān)系,可以知道待選取資源layout1.png的資源類型為布局資源,那么對應(yīng)的文件夾為:layout-a1-b1-c1,本步驟就可以選取在該文件夾中存儲的、標(biāo)識信息為layout1.png的資源文件,作為被選取的資源。
同樣的,如果待選取資源為數(shù)據(jù)型資源,則可以根據(jù)所述標(biāo)識信息,從對應(yīng)文件夾中的數(shù)據(jù)資源文件中讀取相應(yīng)的具體值,作為被選取的資源。
優(yōu)選地,對于待選取資源為數(shù)據(jù)型資源的情況,如果在預(yù)先生成的資源與配置組合的對應(yīng)關(guān)系集合中,針對所述待選取資源的對應(yīng)關(guān)系表項中,不僅包含所述資源的標(biāo)識信息以及所述資源的各宿主文件夾所對應(yīng)的配置組合,還包含所述資源對應(yīng)于其中每個配置組合的具體值,那么本步驟可以直接根據(jù)所述待選取資源的標(biāo)識信息,從所述對應(yīng)關(guān)系集合中提取相應(yīng)的對應(yīng)關(guān)系表項,并從中獲取與所述目標(biāo)配置組合相對應(yīng)的具體值,作為被選取的資源。對于數(shù)據(jù)型資源采用這種處理方式,能夠在選取資源時,進(jìn)一步減少io操作,提高執(zhí)行效率。
至此,通過上述步驟101-步驟103,對本實施例提供的根據(jù)系統(tǒng)配置選取資源的方法的具體實施方式進(jìn)行了詳細(xì)說明。在具體實施時,所述方法通常應(yīng)用于需要加載顯示資源的場景,那么在執(zhí)行完步驟103之后,還可以按照預(yù)設(shè)的方式加載顯示所選取的資源,例如在圖片框中顯示所選取的圖片資源、或者在 文本框中顯示所選取的字符串資源。
綜上所述,本實施例提供的根據(jù)系統(tǒng)配置選取資源的方法,由于預(yù)先生成了資源與配置組合的對應(yīng)關(guān)系集合,因此在每次選取資源的時候,查詢上述對應(yīng)關(guān)系即可快速獲知存儲該資源的各宿主資源集合的配置組合信息,大大減少了查找資源集合的操作,從而可以提高資源選取的速度以及系統(tǒng)的性能,在所述資源集合為文件夾時,因為大量減少io操作,效果更為顯著。
在上述的實施例中,提供了一種根據(jù)系統(tǒng)配置選取資源的方法,與之相對應(yīng)的,本申請還提供一種根據(jù)系統(tǒng)配置選取資源的裝置。請參看圖4,其為本申請的一種根據(jù)系統(tǒng)配置選取資源的裝置的實施例的示意圖。由于裝置實施例基本相似于方法實施例,所以描述得比較簡單,相關(guān)之處參見方法實施例的部分說明即可。下述描述的裝置實施例僅僅是示意性的。
本實施例的一種根據(jù)系統(tǒng)配置選取資源的裝置,包括:配置組合獲取單元401,用于根據(jù)待選取資源的標(biāo)識信息,查詢預(yù)先生成的資源與配置組合的對應(yīng)關(guān)系集合,獲取與所述待選取資源對應(yīng)的各配置組合;目標(biāo)配置組合選擇單元402,用于從所述各配置組合中選擇與當(dāng)前系統(tǒng)配置相匹配的目標(biāo)配置組合;資源選取單元403,用于根據(jù)所述待選取資源的標(biāo)識信息,選取與所述目標(biāo)配置組合對應(yīng)的資源集合中的相應(yīng)資源。
可選的,所述裝置包括:
對應(yīng)關(guān)系集合生成單元,用于在所述配置組合獲取單元工作之前,針對各種資源類型,遍歷與所述資源類型對應(yīng)的資源集合,為其中包含的各資源分別生成對應(yīng)關(guān)系表項,所述對應(yīng)關(guān)系表項中至少包含資源的標(biāo)識信息、以及所述資源的各宿主資源集合所對應(yīng)的配置組合;用生成的對應(yīng)關(guān)系表項組成所述對應(yīng)關(guān)系集合。
可選的,所述對應(yīng)關(guān)系集合生成單元生成的數(shù)據(jù)型資源的對應(yīng)關(guān)系表項中,還包含所述資源在相應(yīng)宿主資源集合中的具體值;
所述資源選取單元具體用于,當(dāng)所述待選取資源為數(shù)據(jù)型資源時,根據(jù)其標(biāo)識信息,從所述對應(yīng)關(guān)系集合中提取相應(yīng)的對應(yīng)關(guān)系表項,并從中獲取與所述目標(biāo)配置組合相對應(yīng)的具體值。
可選的,所述目標(biāo)配置組合選擇單元,具體用于從所述配置組合獲取單元 或取的各配置組合中選擇與當(dāng)前系統(tǒng)配置最匹配的目標(biāo)配置組合。
可選的,所述目標(biāo)配置組合選擇單元,具體用于比較所述各配置組合的第一分?jǐn)?shù),并選擇第一分?jǐn)?shù)最高的配置組合作為所述目標(biāo)配置組合。
可選的,所述裝置還包括:
第一分?jǐn)?shù)判斷單元,用于在觸發(fā)所述目標(biāo)配置組合選擇單元工作之前,判斷是否已預(yù)先計算所述各配置組合的第一分?jǐn)?shù),并在是時,觸發(fā)所述目標(biāo)配置組合選擇單元工作;
第一分?jǐn)?shù)計算單元,用于當(dāng)所述第一分?jǐn)?shù)判斷單元的輸出為否時,計算所述各配置組合的第一分?jǐn)?shù),并觸發(fā)所述目標(biāo)配置組合選擇單元工作。
可選的,所述第一分?jǐn)?shù)計算單元,包括:
循環(huán)控制子單元,用于針對所述各配置組合中的每個配置組合,依次觸發(fā)以下子單元以計算其第一分?jǐn)?shù);
第一分?jǐn)?shù)初始化子單元,用于將待計算的配置組合的第一分?jǐn)?shù)設(shè)置為第一初始值;
第一分?jǐn)?shù)計算執(zhí)行子單元,用于針對所述配置組合中的每個配置項,執(zhí)行以下操作:若所述配置項的限定值與當(dāng)前系統(tǒng)配置中的相應(yīng)值相符,則在第一分?jǐn)?shù)上累加與所述配置項對應(yīng)的預(yù)設(shè)分值;若不相符,則將所述配置組合的第一分?jǐn)?shù)設(shè)置為預(yù)設(shè)的小于所述第一初始值的第二數(shù)值,并結(jié)束針對所述配置組合的計算過程。
可選的,所述目標(biāo)配置組合選擇單元包括:
候選配置組合選擇子單元,用于比較所述各配置組合針對當(dāng)前系統(tǒng)配置的第一分?jǐn)?shù),并選擇第一分?jǐn)?shù)最高的配置組合,作為候選配置組合;
數(shù)目判斷子單元,用于判斷所述候選配置組合的數(shù)目是否大于1;
第一目標(biāo)配置組合選擇子單元,用于當(dāng)所述數(shù)目判斷子單元的輸出為是時,比較各候選配置組合的第二分?jǐn)?shù),并選擇第二分?jǐn)?shù)最低的候選配置組合作為所述目標(biāo)配置組合;
第二目標(biāo)配置組合選擇子單元,用于當(dāng)所述數(shù)目判斷子單元的輸出為否時,將所述候選配置組合選擇子單元所選的候選配置組合作為所述目標(biāo)配置組合。
可選的,所述目標(biāo)配置組合選擇單元還包括:
第二分?jǐn)?shù)判斷子單元,用于當(dāng)所述數(shù)目判斷子單元的輸出為是時,判斷是否已預(yù)先計算出各候選配置組合的第二分?jǐn)?shù),若是則觸發(fā)所述第一目標(biāo)配置組合選擇子單元工作;
第二分?jǐn)?shù)計算子單元,用于當(dāng)所述第二分?jǐn)?shù)判斷子單元的輸出為否時,計算所述各候選配置組合的第二分?jǐn)?shù),并觸發(fā)所述第一目標(biāo)配置組合選擇子單元工作。
可選的,所述第二分?jǐn)?shù)計算子單元,包括:
循環(huán)控制子單元,用于針對所述各候選配置組合中的每個候選配置組合,依次觸發(fā)以下子單元以計算其第二分?jǐn)?shù);
第二分?jǐn)?shù)初始化子單元,用于將待計算的候選配置組合的第二分?jǐn)?shù)設(shè)置為第二初始值;
第二分?jǐn)?shù)計算執(zhí)行子單元,用于針對所述候選配置組合中的每個范圍匹配配置項,執(zhí)行以下操作:根據(jù)所述范圍匹配配置項的限定值中的界限與當(dāng)前系統(tǒng)配置中相應(yīng)值的差值的絕對值,生成差異分值,并將所述差異分值累加到所述第二分?jǐn)?shù)上。
可選的,所述裝置包括:
資源加載顯示單元,用于在所述資源選取單元選取資源后,按照預(yù)設(shè)方式加載顯示所選取的資源。
本申請雖然以較佳實施例公開如上,但其并不是用來限定本申請,任何本領(lǐng)域技術(shù)人員在不脫離本申請的精神和范圍內(nèi),都可以做出可能的變動和修改,因此本申請的保護(hù)范圍應(yīng)當(dāng)以本申請權(quán)利要求所界定的范圍為準(zhǔn)。
在一個典型的配置中,計算設(shè)備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計算機(jī)可讀介質(zhì)中的非永久性存儲器,隨機(jī)存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機(jī)可讀介質(zhì)的示例。
1、計算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機(jī)的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存 (pram)、靜態(tài)隨機(jī)存取存儲器(sram)、動態(tài)隨機(jī)存取存儲器(dram)、其他類型的隨機(jī)存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。
2、本領(lǐng)域技術(shù)人員應(yīng)明白,本申請的實施例可提供為方法、系統(tǒng)或計算機(jī)程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。