欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種資源文件的加載方法和裝置與流程

文檔序號(hào):11829066閱讀:283來(lái)源:國(guó)知局
一種資源文件的加載方法和裝置與流程

本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種資源文件的加載方法和裝置。



背景技術(shù):

在游戲開(kāi)發(fā)過(guò)程中,現(xiàn)有的游戲資源處理工作流是當(dāng)美工或策劃人員修改一個(gè)文件后,讓運(yùn)行中的游戲退出,重新創(chuàng)建一個(gè)資源文件(通常占用幾百兆的存儲(chǔ)空間),然后重新運(yùn)行整個(gè)游戲,這種工作流的方式極大的浪費(fèi)了時(shí)間,影響了游戲的開(kāi)發(fā)速度。例如在目前的冷加載實(shí)現(xiàn)方案中,在游戲啟動(dòng)時(shí)加載所有的資源文件,然后在整個(gè)游戲生命周期內(nèi)使用,當(dāng)資源文件修改后,游戲需要退出,再次打包資源文件,然后重啟游戲服務(wù)器并加載所有的資源文件。在這種冷啟動(dòng)的資源文件加載方案中,當(dāng)資源文件的配置改變之后,需要查看修改資源文件后的加載效果,就不得不退出游戲程序,這樣的工作流限制了游戲的反復(fù)調(diào)整,無(wú)法測(cè)試更多的實(shí)驗(yàn)數(shù)據(jù),嚴(yán)重影響了開(kāi)發(fā)速度和最終的游戲質(zhì)量。



技術(shù)實(shí)現(xiàn)要素:

本發(fā)明實(shí)施例提供了一種資源文件的加載方法和裝置,用于實(shí)現(xiàn)對(duì)資源文件的熱加載,無(wú)需退出正在運(yùn)行的程序即可完成資源文件的加載過(guò)程。

為解決上述技術(shù)問(wèn)題,本發(fā)明實(shí)施例提供以下技術(shù)方案:

第一方面,本發(fā)明實(shí)施例提供一種資源文件的加載方法,包括:

將需要監(jiān)視的資源目錄注冊(cè)到目錄監(jiān)視列表中,所述資源目錄包括:至少一個(gè)資源文件;

對(duì)所述目錄監(jiān)視列表中的資源目錄進(jìn)行文件狀態(tài)變更監(jiān)控;

當(dāng)檢測(cè)到所述目錄監(jiān)視列表中的第一資源文件發(fā)生狀態(tài)變更時(shí),根據(jù)所述目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果獲取所述第一資源文件的文件更新存儲(chǔ)路徑和所述第一資源文件的文件名稱(chēng);

根據(jù)所述文件更新存儲(chǔ)路徑和所述文件名稱(chēng)將更新后的第一資源文件加載到內(nèi)存中,并使用所述更新后的第一資源文件替換掉資源文件映射表中更新前的第一資源文件。

第二方面,本發(fā)明實(shí)施例還提供一種資源文件的加載裝置,包括:

目錄注冊(cè)模塊,用于將需要監(jiān)視的資源目錄注冊(cè)到目錄監(jiān)視列表中,所述資源目錄包括:至少一個(gè)資源文件;

狀態(tài)監(jiān)控模塊,用于對(duì)所述目錄監(jiān)視列表中的資源目錄進(jìn)行文件狀態(tài)變更監(jiān)控;

獲取模塊,用于當(dāng)檢測(cè)到所述目錄監(jiān)視列表中的第一資源文件發(fā)生狀態(tài)變更時(shí),根據(jù)所述目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果獲取所述第一資源文件的文件更新存儲(chǔ)路徑和所述第一資源文件的文件名稱(chēng);

資源更新模塊,用于根據(jù)所述文件更新存儲(chǔ)路徑和所述文件名稱(chēng)將更新后的第一資源文件加載到內(nèi)存中,并使用所述更新后的第一資源文件替換掉資源文件映射表中更新前的第一資源文件。

從以上技術(shù)方案可以看出,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn):

在本發(fā)明實(shí)施例中,首先將需要監(jiān)視的資源目錄注冊(cè)到目錄監(jiān)視列表中,資源目錄包括:至少一個(gè)資源文件,然后對(duì)目錄監(jiān)視列表中的資源目錄進(jìn)行文件狀態(tài)變更監(jiān)控,當(dāng)檢測(cè)到目錄監(jiān)視列表中的第一資源文件發(fā)生狀態(tài)變更時(shí),根據(jù)目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果獲取第一資源文件的文件更新存儲(chǔ)路徑和第一資源文件的文件名稱(chēng),最后根據(jù)文件更新存儲(chǔ)路徑和文件名稱(chēng)將更新后的第一資源文件加載到內(nèi)存中,并使用更新后的第一資源文件替換掉資源文件映射表中更新前的第一資源文件。本發(fā)明實(shí)施例中可以通過(guò)目標(biāo)監(jiān)視列表對(duì)資源目錄進(jìn)行監(jiān)視,當(dāng)有第一資源文件發(fā)生狀態(tài)變更時(shí),將更新后的第一資源文件加載到內(nèi)存中,通過(guò)讀取到內(nèi)存中的更新后的第一資源文件實(shí)現(xiàn)對(duì)資源文件映射表中的第一資源文件的更新,上述第一資源文件的加載并不需要退出正在運(yùn)行的程序,通過(guò)資源文件映射表就可以快速瀏覽到更新后的第一資源文件,本發(fā)明實(shí)施例中可以實(shí)現(xiàn)對(duì)資源文件的熱加載,無(wú)需退出正在運(yùn)行的程序即可完成資源文件的加載過(guò)程。

附圖說(shuō)明

為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域的技術(shù)人員來(lái)講,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為本發(fā)明實(shí)施例提供的一種資源文件的加載方法的流程方框示意圖;

圖2為本發(fā)明實(shí)施例提供的資源文件的熱加載實(shí)現(xiàn)流程示意圖;

圖3-a為本發(fā)明實(shí)施例提供的一種資源文件的加載裝置的組成結(jié)構(gòu)示意圖;

圖3-b為本發(fā)明實(shí)施例提供的一種狀態(tài)監(jiān)控模塊的組成結(jié)構(gòu)示意圖;

圖3-c為本發(fā)明實(shí)施例提供的一種獲取模塊的組成結(jié)構(gòu)示意圖;

圖3-d為本發(fā)明實(shí)施例提供的另一種資源文件的加載裝置的組成結(jié)構(gòu)示意圖;

圖4為本發(fā)明實(shí)施例提供的資源文件的加載方法應(yīng)用于終端的組成結(jié)構(gòu)示意圖。

具體實(shí)施方式

本發(fā)明實(shí)施例提供了一種資源文件的加載方法和裝置,用于實(shí)現(xiàn)對(duì)資源文件的熱加載,無(wú)需退出正在運(yùn)行的程序即可完成資源文件的加載過(guò)程。

為使得本發(fā)明的發(fā)明目的、特征、優(yōu)點(diǎn)能夠更加的明顯和易懂,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,下面所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而非全部實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域的技術(shù)人員所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。

本發(fā)明的說(shuō)明書(shū)和權(quán)利要求書(shū)及上述附圖中的術(shù)語(yǔ)“包括”和“具有”以及他們的任何變形,意圖在于覆蓋不排他的包含,以便包含一系列單元的過(guò)程、方法、系統(tǒng)、產(chǎn)品或設(shè)備不必限于那些單元,而是可包括沒(méi)有清楚地列出的或?qū)τ谶@些過(guò)程、方法、產(chǎn)品或設(shè)備固有的其它單元。

以下分別進(jìn)行詳細(xì)說(shuō)明。本發(fā)明提供的資源文件的加載方法的一個(gè)實(shí)施例,具體可以應(yīng)用于對(duì)資源文件的更新自動(dòng)加載過(guò)程中,請(qǐng)參閱圖1所示,本發(fā)明一個(gè)實(shí)施例提供的資源文件的加載方法,可以包括如下步驟:

101、將需要監(jiān)視的資源目錄注冊(cè)到目錄監(jiān)視列表中,資源目錄包括:至少一個(gè)資源文件。

在本發(fā)明實(shí)施例中可以使用目錄監(jiān)視列表實(shí)現(xiàn)對(duì)資源目錄的動(dòng)態(tài)監(jiān)管,對(duì)于需要監(jiān)視的資源目錄首先注冊(cè)到目錄監(jiān)視列表中,需要監(jiān)視的資源目錄中可以包括至少一個(gè)的資源文件。其中,資源文件可以是包括多種文件類(lèi)型,具體可以應(yīng)用場(chǎng)景來(lái)確定,例如在游戲場(chǎng)景下,資源文件可以包括游戲模型、游戲關(guān)卡、游戲角色、游戲聲音和游戲動(dòng)畫(huà)等。又如在軟件開(kāi)發(fā)場(chǎng)景下,資源文件可以是需要配置的屬性文件、應(yīng)用文件和日志文件等。本發(fā)明實(shí)施例中資源文件通過(guò)資源目錄來(lái)管理,在資源目錄中包括的資源文件個(gè)數(shù)不做限定。本發(fā)明實(shí)施例提供的目錄監(jiān)視列表中包括所有需要監(jiān)視的資源目錄,目錄監(jiān)視列表可以根據(jù)目錄監(jiān)控的需要進(jìn)行實(shí)時(shí)更新。

在本發(fā)明的一些實(shí)施例中,步驟101將需要監(jiān)視的資源目錄注冊(cè)到目錄監(jiān)視列表中,具體可以包括如下步驟:

A1、將需要監(jiān)視的資源目錄注冊(cè)到文件監(jiān)視器的目標(biāo)監(jiān)視列表中。

其中,本發(fā)明實(shí)施例中目標(biāo)監(jiān)視列表可以通過(guò)文件監(jiān)視器來(lái)實(shí)現(xiàn),對(duì)于需要監(jiān)視的資源目錄,可以發(fā)送給文件監(jiān)視器,由文件監(jiān)視器將資源目錄寫(xiě)入到目標(biāo)監(jiān)視列表中,例如可以通過(guò)window操作系統(tǒng)中的file watcher實(shí)現(xiàn)文件監(jiān)視器。

102、對(duì)目錄監(jiān)視列表中的資源目錄進(jìn)行文件狀態(tài)變更監(jiān)控。

在本發(fā)明實(shí)施例中,通過(guò)目錄監(jiān)視列表添加需要監(jiān)視的資源目錄之后,對(duì)該目標(biāo)監(jiān)視列表中的資源目錄進(jìn)行監(jiān)控,需要監(jiān)控目錄監(jiān)視列表中的資源目錄中是否有資源文件的文件狀態(tài)發(fā)生了變更。其中文件狀態(tài)變更具體可以指的是修改資源文件的文件內(nèi)容,增加新的資源文件或者刪除無(wú)效的資源文件等,例如目錄監(jiān)視列表中的資源文件被修改后寫(xiě)入了存儲(chǔ)器,則可以確定資源文件的文件狀態(tài)發(fā)生了變更。后續(xù)實(shí)施例中以資源文件的文件內(nèi)容修改為例進(jìn)行說(shuō)明。

在本發(fā)明的一些實(shí)施例中,在前述執(zhí)行步驟A1的實(shí)現(xiàn)場(chǎng)景下,步驟102對(duì)目錄監(jiān)視列表中的資源目錄進(jìn)行文件狀態(tài)變更監(jiān)控,包括:

B1、通過(guò)文件監(jiān)視器檢測(cè)目錄監(jiān)視列表中的資源目錄中是否有資源文件的文件狀態(tài)發(fā)生變更。

其中,在前述實(shí)施例中,文件監(jiān)視器檢測(cè)目錄監(jiān)視列表時(shí),可以通過(guò)文件監(jiān)視器來(lái)判斷目錄監(jiān)視列表中的資源目錄中是否有資源文件的文件狀態(tài)發(fā)生變更。文件監(jiān)視器可以按照配置的檢測(cè)周期來(lái)實(shí)時(shí)的判斷是否有資源文件的文件狀態(tài)變更,若有資源文件的文件狀態(tài)變更時(shí)文件監(jiān)視器可以輸出變更提醒,若在當(dāng)前的檢測(cè)周期內(nèi)沒(méi)有發(fā)生文件狀態(tài)變更,則啟動(dòng)下一個(gè)檢測(cè)周期,繼續(xù)判斷目標(biāo)監(jiān)視列表中是否有資源文件的文件狀態(tài)發(fā)生變更。

在本發(fā)明的另一些實(shí)施例中,步驟102對(duì)目錄監(jiān)視列表中的資源目錄進(jìn)行文件狀態(tài)變更監(jiān)控,包括:

C1、將目標(biāo)監(jiān)視列表中的資源目錄與狀態(tài)變更事件關(guān)聯(lián)起來(lái);

C2、按照預(yù)置的輪詢(xún)周期判斷狀態(tài)變更事件是否發(fā)生,當(dāng)狀態(tài)變更事件發(fā)生時(shí),根據(jù)目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果確定目標(biāo)監(jiān)視列表中發(fā)生狀態(tài)變更的資源文件,當(dāng)狀態(tài)變更事件沒(méi)有發(fā)生時(shí),確定目標(biāo)監(jiān)視列表中沒(méi)有資源文件發(fā)生狀態(tài)變更。

其中,對(duì)于目標(biāo)監(jiān)視列表中的資源目錄分別建立與之匹配的狀態(tài)變更事件,則對(duì)于不同資源目錄下的文件狀態(tài)變更就可以通過(guò)狀態(tài)變更事件來(lái)檢測(cè)到,目標(biāo)監(jiān)視列表中的資源目錄與狀態(tài)變更事件之間建立關(guān)聯(lián)關(guān)系就可以實(shí)現(xiàn)各個(gè)資源目錄和對(duì)應(yīng)的狀態(tài)變更事件之間的綁定。然后對(duì)建立的狀態(tài)變更事件是否發(fā)生進(jìn)行實(shí)時(shí)的判斷,例如可以設(shè)置輪詢(xún)周期,輪詢(xún)周期可以具體應(yīng)用場(chǎng)景來(lái)設(shè)置,例如可以設(shè)置為100毫秒,在對(duì)于事件產(chǎn)生更敏感的應(yīng)用場(chǎng)景下,輪詢(xún)周期還可以設(shè)置為小于100毫秒的其它時(shí)間值。通過(guò)對(duì)狀態(tài)變更事件的周期性判斷,可以生成目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果,當(dāng)狀態(tài)變更事件發(fā)生時(shí),根據(jù)該監(jiān)控結(jié)果可以確定目標(biāo)監(jiān)視列表中發(fā)生狀態(tài)變更的資源文件,當(dāng)狀態(tài)變更事件沒(méi)有發(fā)生時(shí),確定目標(biāo)監(jiān)視列表中沒(méi)有資源文件發(fā)生狀態(tài)變更。其中狀態(tài)變更事件的發(fā)生與否可以通過(guò)對(duì)事件的不同取值來(lái)判斷,例如當(dāng)事件取值為真(英文名稱(chēng):true)時(shí)確定狀態(tài)變更事件發(fā)生,當(dāng)事件取值為否(英文名稱(chēng):false)時(shí)確定沒(méi)有任何狀態(tài)變更事件發(fā)生。

103、當(dāng)檢測(cè)到目錄監(jiān)視列表中的第一資源文件發(fā)生狀態(tài)變更時(shí),根據(jù)目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果獲取第一資源文件的文件更新存儲(chǔ)路徑和第一資源文件的文件名稱(chēng)。

在本發(fā)明實(shí)施例中,通過(guò)步驟102可以對(duì)目錄監(jiān)視列表中的資源目錄進(jìn)行實(shí)時(shí)的文件狀態(tài)變更監(jiān)控,在檢測(cè)到有資源文件的文件狀態(tài)變更時(shí)可以執(zhí)行步驟103,為了便于描述,將發(fā)生了文件狀態(tài)變更的資源文件定義為第一資源文件,該第一資源文件指的是在目錄監(jiān)視列表中產(chǎn)生了文件狀態(tài)更新的某個(gè)資源文件或者某些資源文件。當(dāng)檢測(cè)到目錄監(jiān)視列表中的第一資源文件發(fā)生狀態(tài)變更時(shí),獲取到目標(biāo)監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果,該監(jiān)控結(jié)果可以是按照目標(biāo)監(jiān)視列表對(duì)資源目錄進(jìn)行監(jiān)控時(shí)記錄下來(lái)的監(jiān)控日志,也可以是從該監(jiān)控日志中提取出的文件狀態(tài)變更的資源文件集合,此處不做限定。獲取到目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果之后,根據(jù)目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果可以確定出第一資源文件發(fā)生文件狀態(tài)變更,從該監(jiān)控結(jié)果中可以獲取到第一資源文件的文件更新存儲(chǔ)路徑和第一資源文件的文件名稱(chēng),其中,第一資源文件的文件更新存儲(chǔ)路徑是指第一資源文件更新后的文件包的存儲(chǔ)地址,第一資源文件的文件名稱(chēng)是該第一資源文件在存儲(chǔ)時(shí)使用的文件名稱(chēng),例如可以是按照資源文件的命名規(guī)則輸出的文件名稱(chēng),也可以是用戶(hù)在更改第一資源文件時(shí)配置的文件名稱(chēng),此處不做限定。

在本發(fā)明的一些實(shí)施例中,步驟103當(dāng)檢測(cè)到目錄監(jiān)視列表中的第一資源文件發(fā)生狀態(tài)變更時(shí),根據(jù)目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果獲取第一資源文件的文件更新存儲(chǔ)路徑和第一資源文件的文件名稱(chēng),包括:

E1、根據(jù)目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果確定目標(biāo)監(jiān)視列表中發(fā)生狀態(tài)變更的資源文件為第一資源文件;

E2、向重新加載監(jiān)聽(tīng)器發(fā)送事件消息,事件消息包括:第一資源文件的文件更新存儲(chǔ)路徑和第一資源文件的文件名稱(chēng);

E3、通過(guò)重新加載監(jiān)聽(tīng)器解析事件消息確定文件更新存儲(chǔ)路徑和文件名稱(chēng)。

其中,在本發(fā)明的一些實(shí)施例中,可以通過(guò)重新加載監(jiān)聽(tīng)器來(lái)完成對(duì)資源文件的重新加載,先通過(guò)目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果分析出目錄監(jiān)視列表中的第一資源文件發(fā)生了狀態(tài)變更,重新加載監(jiān)聽(tīng)器的執(zhí)行邏輯為先接收事件消息,然后從事件消息中獲取到文件更新存儲(chǔ)路徑和文件名稱(chēng),則重新加載監(jiān)聽(tīng)器通過(guò)文件更新存儲(chǔ)路徑和文件名稱(chēng)獲取到第一資源文件發(fā)生狀態(tài)更新,則通過(guò)重新加載監(jiān)聽(tīng)器可以對(duì)該第一資源文件進(jìn)行重新加載,例如重新加載監(jiān)聽(tīng)器可以完成后續(xù)步驟104中的資源重加載過(guò)程。

104、根據(jù)文件更新存儲(chǔ)路徑和文件名稱(chēng)將更新后的第一資源文件加載到內(nèi)存中,并使用更新后的第一資源文件替換掉資源文件映射表中更新前的第一資源文件。

在本發(fā)明實(shí)施例,獲取到第一資源文件的文件更新存儲(chǔ)路徑和文件名稱(chēng)之后,通過(guò)第一資源文件的文件名稱(chēng)按照該文件更新存儲(chǔ)路徑可以讀取到更新后的第一資源文件,將更新后的第一資源文件加載到內(nèi)存中,從而可以?xún)?nèi)存中的存儲(chǔ)空間地址讀取到更新后的第一資源文件,然后根據(jù)第一資源文件的更新結(jié)果來(lái)維護(hù)資源文件映射表,按照第一資源文件的更新結(jié)果對(duì)資源文件映射表進(jìn)行實(shí)時(shí)更新。本發(fā)明實(shí)施例中資源文件映射表是用于資源文件的實(shí)時(shí)讀取,通過(guò)資源文件映射表中對(duì)更新前的第一資源文件的替換操作,使得資源文件映射表能夠保存最新的資源文件信息,當(dāng)需要使用第一資源文件時(shí)可以通過(guò)訪(fǎng)問(wèn)資源文件映射表來(lái)獲取到最新的第一資源文件。本發(fā)明實(shí)施例中更新后的第一資源文件被加載到內(nèi)存中,通過(guò)對(duì)內(nèi)存中的資源文件映射表的實(shí)時(shí)維護(hù),可以實(shí)現(xiàn)資源文件映射表中的資源文件的自動(dòng)更新,從而在訪(fǎng)問(wèn)資源文件映射表時(shí)可以得到所有資源文件的最新文件內(nèi)容,不需要退出正在運(yùn)營(yíng)的程序就可以完成資源文件的熱下載。

在本發(fā)明的一些實(shí)施例中,步驟104中的使用更新后的第一資源文件替換掉資源文件映射表中更新前的第一資源文件,包括:

F1、根據(jù)文件更新存儲(chǔ)路徑和文件名稱(chēng)獲取更新后的第一資源文件的標(biāo)識(shí)符,將資源文件映射表中更新前的第一資源文件的標(biāo)識(shí)符替換為更新后的第一資源文件的標(biāo)識(shí)符。

其中,資源文件映射表中資源文件的映射關(guān)系通過(guò)資源文件的標(biāo)識(shí)符來(lái)確定,通過(guò)前述步驟103獲取到第一資源文件的文件更新存儲(chǔ)路徑和文件名稱(chēng)后,通過(guò)文件更新存儲(chǔ)路徑和文件名稱(chēng)按照映射規(guī)則可以確定出資源文件的標(biāo)識(shí)符,然后對(duì)資源文件映射表中的更新前后的第一資源文件的標(biāo)識(shí)符進(jìn)行替換,從而資源文件映射表中的第一資源文件的標(biāo)識(shí)符的替換,通過(guò)資源文件映射表可以獲取到在內(nèi)存中加載的最新的第一資源文件,從而可以實(shí)現(xiàn)資源文件有狀態(tài)更新時(shí)的熱加載。

在本發(fā)明的一些實(shí)施例中,步驟104使用更新后的第一資源文件替換掉資源文件映射表中更新前的第一資源文件之后,本發(fā)明實(shí)施例提供的資源文件的加載方法還可以包括:

G1、從資源文件映射表中讀取更新后的第一資源文件,在資源應(yīng)用界面中顯示更新后的第一資源文件。

其中,在資源文件映射表中完成第一資源文件的狀態(tài)變更之后,當(dāng)用戶(hù)需要使用第一資源文件時(shí),可以從資源文件映射表中讀取最新的第一資源文件,資源應(yīng)用界面為資源文件的加載顯示界面,可以在資源應(yīng)用界面中顯示更新后的第一資源文件,資源應(yīng)用界面中顯示的第一資源文件為熱加載完成后的第一資源文件,從而不需要退出加載有資源文件的應(yīng)用程序,就可以完成在該應(yīng)用程序中實(shí)現(xiàn)對(duì)資源文件的熱加載。

通過(guò)以上實(shí)施例對(duì)本發(fā)明實(shí)施例的描述可知,首先將需要監(jiān)視的資源目錄注冊(cè)到目錄監(jiān)視列表中,資源目錄包括:至少一個(gè)資源文件,然后對(duì)目錄監(jiān)視列表中的資源目錄進(jìn)行文件狀態(tài)變更監(jiān)控,當(dāng)檢測(cè)到目錄監(jiān)視列表中的第一資源文件發(fā)生狀態(tài)變更時(shí),根據(jù)目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果獲取第一資源文件的文件更新存儲(chǔ)路徑和第一資源文件的文件名稱(chēng),最后根據(jù)文件更新存儲(chǔ)路徑和文件名稱(chēng)將更新后的第一資源文件加載到內(nèi)存中,并使用更新后的第一資源文件替換掉資源文件映射表中更新前的第一資源文件。本發(fā)明實(shí)施例中可以通過(guò)目標(biāo)監(jiān)視列表對(duì)資源目錄進(jìn)行監(jiān)視,當(dāng)有第一資源文件發(fā)生狀態(tài)變更時(shí),將更新后的第一資源文件加載到內(nèi)存中,通過(guò)讀取到內(nèi)存中的更新后的第一資源文件實(shí)現(xiàn)對(duì)資源文件映射表中的第一資源文件的更新,上述第一資源文件的加載并不需要退出正在運(yùn)行的程序,通過(guò)資源文件映射表就可以快速瀏覽到更新后的第一資源文件,本發(fā)明實(shí)施例中可以實(shí)現(xiàn)對(duì)資源文件的熱加載,無(wú)需退出正在運(yùn)行的程序即可完成資源文件的加載過(guò)程。

為便于更好的理解和實(shí)施本發(fā)明實(shí)施例的上述方案,下面舉例相應(yīng)的應(yīng)用場(chǎng)景來(lái)進(jìn)行具體說(shuō)明。本發(fā)明實(shí)施例中可以實(shí)現(xiàn)資源文件的熱加載,接下來(lái)以游戲應(yīng)用程序中資源文件的熱加載為例進(jìn)行詳細(xì)舉例說(shuō)明。在游戲運(yùn)行中,資源文件的狀態(tài)改變生成一個(gè)狀態(tài)變更事件,游戲中的資源監(jiān)聽(tīng)程序收到這個(gè)事件,從事件中檢索出文件更新存儲(chǔ)路徑和文件名,再次加載資源文件,實(shí)現(xiàn)文件改動(dòng)重新加載的功能。很多類(lèi)型的資源文件都可以進(jìn)行熱加載,例如,本發(fā)明實(shí)施例中的資源文件可以包括:圖片、模型、關(guān)卡幾何體、腳本、游戲角色、聲音和動(dòng)畫(huà)等,只需幾秒鐘的時(shí)間,就可以完成一次反復(fù)調(diào)整的過(guò)程,最終帶來(lái)更完美的游戲產(chǎn)品。

本發(fā)明實(shí)施例中,對(duì)需要重新加載的資源文件在游戲啟動(dòng)時(shí),把所在的資源目錄注冊(cè)到目錄監(jiān)視列表中,當(dāng)資源文件的狀態(tài)發(fā)生變化時(shí),生成一個(gè)事件,當(dāng)資源管理器中接收到這個(gè)事件時(shí),從事件中檢索出文件名和文件更新存儲(chǔ)路徑,然后根據(jù)文件更新存儲(chǔ)路徑啟動(dòng)資源文件的重新加載,最后根據(jù)文件更新存儲(chǔ)路徑到具體的資源文件映射表替換原來(lái)的資源文件,實(shí)現(xiàn)資源標(biāo)識(shí)符的重新綁定。實(shí)現(xiàn)了當(dāng)資源文件的狀態(tài)改變時(shí),不用退出游戲程序,就可以實(shí)現(xiàn)資源的自動(dòng)重新加載。

本發(fā)明實(shí)施例提供的資源文件的加載方法可以?xún)?nèi)嵌在游戲開(kāi)發(fā)工作流中,但各個(gè)資源文件的加載方式不同,表格數(shù)據(jù)存放在數(shù)據(jù)庫(kù)表格中,修改后,需要調(diào)用資源轉(zhuǎn)換工具ResConvert生成二進(jìn)制(英文名稱(chēng):bin)文件,其他的一些資源文件,如屬性配置文件(例如:psheet)、行為樹(shù),腳本和json(英文全稱(chēng):javascript object notation)文件等,只要文件狀態(tài)發(fā)生改變,運(yùn)行中的游戲會(huì)自動(dòng)啟動(dòng)重新加載程序。

接下來(lái)以json文件的熱加載為例進(jìn)行說(shuō)明,json文件屬于AS(英文全稱(chēng):ActionScript)腳本中用戶(hù)界面(英文全稱(chēng):User Interface,英文簡(jiǎn)稱(chēng):UI)界面資源的配置文件,在游戲啟動(dòng)時(shí)自動(dòng)加載,在游戲運(yùn)行中,當(dāng)資源文件的修改保存后,AS的資源管理器會(huì)接受到由文件監(jiān)視器發(fā)送的文件修改事件,然后自動(dòng)重新加載,替換掉原來(lái)舊的資源文件。在游戲中,對(duì)使用json文件數(shù)據(jù)的界面,重新打開(kāi)讀取最新的配置信息。舉例說(shuō)明如下,可以編寫(xiě)如下代碼:

通過(guò)上述代碼把界面上顯示的字符串信息配置在了json文件中,當(dāng)修改了字符串內(nèi)容并保存時(shí),重新打開(kāi)界面,就可以馬上看到修改后的內(nèi)容為:可隨機(jī)獲得一本低階或中階的技能書(shū)。

接下來(lái)請(qǐng)參閱圖2所示,圖2為本發(fā)明實(shí)施例提供的資源文件的熱加載實(shí)現(xiàn)流程示意圖。以資源文件的熱加載的工作流程進(jìn)行典型情形的示意說(shuō)明,在圖2中,資源文件的熱加載被集成到工作流中,以及系統(tǒng)的各個(gè)不同的部分是如何彼此交互的,相關(guān)的步驟主要包括如下:

1、注冊(cè)資源目錄,把需要監(jiān)視的資源目錄注冊(cè)到文件監(jiān)視器的目錄監(jiān)視列表中。

2、資源編輯工具修改并保存了資源文件,如:json、btree和psheet等,例如修改后的資源文件為:Asset0.bin、Asset1.json、Asset2.btree、Asset3.psheet。

3、文件監(jiān)視器(File Watcher)檢測(cè)到它所監(jiān)視的某個(gè)資源目錄中有一個(gè)資源文件被改動(dòng)了。然后通過(guò)事件消息(GE_FILE_CHANGED)把更新文件的更新存儲(chǔ)路徑和文件名稱(chēng)發(fā)送給重新加載監(jiān)聽(tīng)器。

4、重新加載監(jiān)聽(tīng)器通過(guò)監(jiān)聽(tīng)事件接收到這個(gè)消息。然后從消息中檢索到文件更新存儲(chǔ)路徑和文件名稱(chēng),隨后就啟動(dòng)資源文件的重新加載過(guò)程。

5、新改動(dòng)的資源文件被加載到內(nèi)存中,通過(guò)資源映射表找到舊資源文件的標(biāo)識(shí)符,并在資源映射表中替換它的位置,原先那個(gè)舊資源文件已經(jīng)過(guò)時(shí)了,從內(nèi)存中移除,在內(nèi)存中只保留新資源文件。

6、在接下來(lái)的游戲運(yùn)行過(guò)程中,在使用該資源文件的地方就開(kāi)始使用這個(gè)新的資源文件數(shù)據(jù)了。

本發(fā)明實(shí)施例中,資源文件被修改單擊保存到這個(gè)新的資源文件在游戲中使用,所用的時(shí)間是非常短的,通常不到1秒鐘的時(shí)間,系統(tǒng)就能使用新的資源文件,并馬上看到修改后的文件加載效果。對(duì)于大型的游戲資源,或者重新加載需要的系統(tǒng)開(kāi)銷(xiāo)過(guò)大,時(shí)間相對(duì)會(huì)長(zhǎng)一些,但也很少會(huì)超過(guò)幾秒鐘。

接下來(lái)對(duì)本發(fā)明實(shí)施例中資源文件熱加載過(guò)程進(jìn)行舉例說(shuō)明。在資源文件的熱加載中,主要涉及3個(gè)主要的元素:文件監(jiān)視器、重新加載監(jiān)聽(tīng)器,以及重新綁定資源文件。

首先對(duì)文件監(jiān)視器進(jìn)行詳細(xì)說(shuō)明,文件監(jiān)視器的工作是監(jiān)視已創(chuàng)建資源的目錄,并在任何文件發(fā)生變化時(shí),通知重新加載監(jiān)聽(tīng)程序。在游戲啟動(dòng)時(shí),把需要監(jiān)視的目錄注冊(cè)到目錄監(jiān)視列表中,例如文件監(jiān)視器可以執(zhí)行如下的配置邏輯:

//配置信息

GeFileWatcher::GetInstance().AddWatch("..\\Data\\Config",true);

//行為樹(shù)

GeFileWatcher::GetInstance().AddWatch("..\\Data\\Btree",true);

//屬性表

GeFileWatcher::GetInstance().AddWatch("..\\Data\\PropSheet",true);

//Bin表

GeFileWatcher::GetInstance().AddWatch("..\\Data\\Table",true);

//swf或者gfx

GeFileWatcher::GetInstance().AddWatch("..\\Data\\UI",true);

創(chuàng)建一個(gè)資源文件(該文件需要熱加載)時(shí),需要放置在文件監(jiān)視器所監(jiān)視的某個(gè)資源目錄中。文件監(jiān)視器在另一個(gè)線(xiàn)程中運(yùn)行,一直在不停地監(jiān)視注冊(cè)的資源目錄,當(dāng)修改保存某個(gè)資源文件時(shí),它就會(huì)注意到有一個(gè)寫(xiě)文件的操作發(fā)生了,并將這個(gè)改動(dòng)通過(guò)事件發(fā)送給重新加載監(jiān)聽(tīng)器。

監(jiān)視文件可以通過(guò)操縱系統(tǒng)專(zhuān)有的文件事件函數(shù)注冊(cè)文件,當(dāng)某個(gè)目錄下的某個(gè)文件發(fā)生變化時(shí),它就可以發(fā)送一個(gè)相應(yīng)的事件,例如在Win32系統(tǒng)上的實(shí)現(xiàn)使用了ReadDirectoryChangesW函數(shù)。ReadDirectoryChangesW函數(shù)將一個(gè)目錄與一個(gè)事件關(guān)聯(lián)起來(lái)。當(dāng)這個(gè)目錄中的文件發(fā)生變化時(shí)(執(zhí)行任何文件操作時(shí)),就會(huì)發(fā)生相應(yīng)的信號(hào)。文件監(jiān)視器通過(guò)GetOverlappedResult函數(shù),每200毫秒就輪詢(xún)一次這個(gè)事件,看它是否發(fā)生。如果返回值為T(mén)rue,意味著目標(biāo)目錄中有一個(gè)文件發(fā)生了變化。多個(gè)發(fā)生變化的文件集合用一個(gè)大型的char buffer返回,這個(gè)char buffer的內(nèi)容是結(jié)構(gòu)體FILE_NOTIFY_INFORMATION定義的內(nèi)容,只有那些事件類(lèi)型為FILE_ACTION_MODIFIED表項(xiàng)才會(huì)被處理,表明它們剛剛被寫(xiě)入磁盤(pán)。

處理完所有改動(dòng)過(guò)的資源文件,通過(guò)事件(GE_FILE_CHANGED)并將它們發(fā)送給重新加載監(jiān)聽(tīng)器,其中使用的邏輯代碼可以為:

GeVariantMap params;

params["FilePath"]=GeStr(fullFilePath.CString());//文件路徑

params["Ext"]=GeStr(fileExtension.CString());//文件擴(kuò)展名后綴

//發(fā)生事件

GeEventService::Get().FireEvent(GE_FILE_CHANGED,params);

當(dāng)發(fā)送完畢后,文件監(jiān)視器必須要再次調(diào)用ReadDirectoryChangesW函數(shù)來(lái)啟動(dòng)新的監(jiān)聽(tīng)過(guò)程,開(kāi)始事件監(jiān)聽(tīng)周期。

接下來(lái)對(duì)重新加載監(jiān)聽(tīng)器進(jìn)行詳細(xì)說(shuō)明,重新加載監(jiān)聽(tīng)器可以是一些C++類(lèi)的集合,每一個(gè)類(lèi)管理一種資源類(lèi)型,監(jiān)聽(tīng)事件(GE_FILE_CHANGED)實(shí)現(xiàn)資源的重新加載。重新加載監(jiān)聽(tīng)器注冊(cè)監(jiān)聽(tīng)文件修改事件,來(lái)準(zhǔn)備接受來(lái)自文件監(jiān)視器的事件通知,一旦有通知發(fā)布過(guò)來(lái),就啟動(dòng)一個(gè)特定資源重加載的過(guò)程。為了能夠正確地完成自己的工作,重新加載監(jiān)聽(tīng)器從事件中獲得文件更新存儲(chǔ)路徑和文件名稱(chēng),實(shí)現(xiàn)資源文件的重新加載。

接下來(lái)對(duì)資源文件的重新綁定進(jìn)行說(shuō)明,當(dāng)資源文件重新加載后,需要替換掉舊的資源文件,對(duì)于一些簡(jiǎn)單的資源文件,對(duì)它們的屬性進(jìn)行重新賦值就可以解決,像紋理或音效之類(lèi)的資源,使用句柄代表它們,當(dāng)這類(lèi)的資源文件重新加載后,需要根據(jù)資源文件的更新存儲(chǔ)路徑到句柄映射表,查找到舊資源文件的句柄,接著把新的句柄值替換掉舊的資源文件句柄值,在以后的游戲運(yùn)行中,系統(tǒng)就可以使用新的資源文件了。

本發(fā)明實(shí)施例中,資源文件的熱加載技術(shù)可以大大降低游戲進(jìn)行反復(fù)調(diào)整所用的時(shí)間,對(duì)大部分最通用的資源文件實(shí)現(xiàn)熱加載功能,以最小的工作量獲得最大的回報(bào)。資源文件的熱加載采用了消息發(fā)布-訂閱模式進(jìn)行設(shè)計(jì),減少了熱加載代碼和系統(tǒng)其他模塊之間的耦合。熱加載功能只需要在開(kāi)發(fā)過(guò)程中使用,為了禁止熱加載代碼對(duì)游戲發(fā)布之后的影響(如:黑客利用更新機(jī)制實(shí)現(xiàn)游戲外掛)和減少正式版本的編譯速度,在游戲正式發(fā)行之前,可以用#ifdefs語(yǔ)句,很容易地將這些代碼移除。

本發(fā)明實(shí)施例中資源文件的熱加載技術(shù)可以在修改資源文件后,不必退出重啟游戲程序,便可以看到修改后的文件加載結(jié)果,從而實(shí)現(xiàn)對(duì)游戲快速、輕松地反復(fù)調(diào)整,極大的提高了游戲開(kāi)發(fā)的速度。需要說(shuō)明的是,在本發(fā)明實(shí)施例中同樣使用熱加載技術(shù),可能減少或增加不同的文件改動(dòng)步驟,如利用轉(zhuǎn)換工具把文件轉(zhuǎn)換為另一種文件格式,然后對(duì)新的文件狀態(tài)改變生成事件消息。本發(fā)明實(shí)施例中的方法可以用于加載其他任何形式的資源,如二進(jìn)制文件,紋理文件等。本發(fā)明實(shí)施例中的文件狀態(tài)變化通知可以用其他的方式,如使用網(wǎng)絡(luò)協(xié)議,或者命令模式。

需要說(shuō)明的是,對(duì)于前述的各方法實(shí)施例,為了簡(jiǎn)單描述,故將其都表述為一系列的動(dòng)作組合,但是本領(lǐng)域技術(shù)人員應(yīng)該知悉,本發(fā)明并不受所描述的動(dòng)作順序的限制,因?yàn)橐罁?jù)本發(fā)明,某些步驟可以采用其他順序或者同時(shí)進(jìn)行。其次,本領(lǐng)域技術(shù)人員也應(yīng)該知悉,說(shuō)明書(shū)中所描述的實(shí)施例均屬于優(yōu)選實(shí)施例,所涉及的動(dòng)作和模塊并不一定是本發(fā)明所必須的。

為便于更好的實(shí)施本發(fā)明實(shí)施例的上述方案,下面還提供用于實(shí)施上述方案的相關(guān)裝置。

請(qǐng)參閱圖3-a所示,本發(fā)明實(shí)施例提供的一種資源文件的加載裝置300,可以包括:目錄注冊(cè)模塊301、狀態(tài)監(jiān)控模塊302、獲取模塊303和資源更新模塊304,其中,

目錄注冊(cè)模塊301,用于將需要監(jiān)視的資源目錄注冊(cè)到目錄監(jiān)視列表中,所述資源目錄包括:至少一個(gè)資源文件;

狀態(tài)監(jiān)控模塊302,用于對(duì)所述目錄監(jiān)視列表中的資源目錄進(jìn)行文件狀態(tài)變更監(jiān)控;

獲取模塊303,用于當(dāng)檢測(cè)到所述目錄監(jiān)視列表中的第一資源文件發(fā)生狀態(tài)變更時(shí),根據(jù)所述目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果獲取所述第一資源文件的文件更新存儲(chǔ)路徑和所述第一資源文件的文件名稱(chēng);

資源更新模塊304,用于根據(jù)所述文件更新存儲(chǔ)路徑和所述文件名稱(chēng)將更新后的第一資源文件加載到內(nèi)存中,并使用所述更新后的第一資源文件替換掉資源文件映射表中更新前的第一資源文件。

在本發(fā)明的一些實(shí)施例中,所述目錄注冊(cè)模塊301,具體用于將需要監(jiān)視的資源目錄注冊(cè)到文件監(jiān)視器的目標(biāo)監(jiān)視列表中;

所述狀態(tài)監(jiān)控模塊302,具體用于通過(guò)所述文件監(jiān)視器檢測(cè)所述目錄監(jiān)視列表中的資源目錄中是否有資源文件的文件狀態(tài)發(fā)生變更。

在本發(fā)明的一些實(shí)施例中,請(qǐng)參閱圖3-b所示,所述狀態(tài)監(jiān)控模塊302,包括:

事件關(guān)聯(lián)模塊3021,用于將所述目標(biāo)監(jiān)視列表中的資源目錄與狀態(tài)變更事件關(guān)聯(lián)起來(lái);

事件發(fā)生判斷模塊3022,用于按照預(yù)置的輪詢(xún)周期判斷所述狀態(tài)變更事件是否發(fā)生,當(dāng)所述狀態(tài)變更事件發(fā)生時(shí),根據(jù)所述目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果確定所述目標(biāo)監(jiān)視列表中發(fā)生狀態(tài)變更的資源文件,當(dāng)所述狀態(tài)變更事件沒(méi)有發(fā)生時(shí),確定所述目標(biāo)監(jiān)視列表中沒(méi)有資源文件發(fā)生狀態(tài)變更。

在本發(fā)明的一些實(shí)施例中,請(qǐng)參閱圖3-c所示,所述獲取模塊303,包括:

結(jié)果分析模塊3031,用于根據(jù)所述目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果確定所述目標(biāo)監(jiān)視列表中發(fā)生狀態(tài)變更的資源文件為第一資源文件;

發(fā)送模塊3032,用于向重新加載監(jiān)聽(tīng)器發(fā)送事件消息,所述事件消息包括:所述第一資源文件的文件更新存儲(chǔ)路徑和所述第一資源文件的文件名稱(chēng);

事件消息解析模塊3033,用于通過(guò)所述重新加載監(jiān)聽(tīng)器解析所述事件消息確定所述文件更新存儲(chǔ)路徑和所述文件名稱(chēng)。

在本發(fā)明的一些實(shí)施例中,所述資源更新模塊304,具體用于根據(jù)所述文件更新存儲(chǔ)路徑和所述文件名稱(chēng)獲取所述更新后的第一資源文件的標(biāo)識(shí)符,將所述資源文件映射表中更新前的第一資源文件的標(biāo)識(shí)符替換為所述更新后的第一資源文件的標(biāo)識(shí)符。

在本發(fā)明的一些實(shí)施例中,請(qǐng)參閱圖3-d所示,所述資源文件的加載裝置300,還包括:文件顯示模塊305,用于所述資源更新模塊304使用所述更新后的第一資源文件替換掉資源文件映射表中更新前的第一資源文件之后,從所述資源文件映射表中讀取所述更新后的第一資源文件,在資源應(yīng)用界面中顯示所述更新后的第一資源文件。

通過(guò)以上對(duì)本發(fā)明實(shí)施例的描述可知,首先將需要監(jiān)視的資源目錄注冊(cè)到目錄監(jiān)視列表中,資源目錄包括:至少一個(gè)資源文件,然后對(duì)目錄監(jiān)視列表中的資源目錄進(jìn)行文件狀態(tài)變更監(jiān)控,當(dāng)檢測(cè)到目錄監(jiān)視列表中的第一資源文件發(fā)生狀態(tài)變更時(shí),根據(jù)目錄監(jiān)視列表對(duì)應(yīng)的監(jiān)控結(jié)果獲取第一資源文件的文件更新存儲(chǔ)路徑和第一資源文件的文件名稱(chēng),最后根據(jù)文件更新存儲(chǔ)路徑和文件名稱(chēng)將更新后的第一資源文件加載到內(nèi)存中,并使用更新后的第一資源文件替換掉資源文件映射表中更新前的第一資源文件。本發(fā)明實(shí)施例中可以通過(guò)目標(biāo)監(jiān)視列表對(duì)資源目錄進(jìn)行監(jiān)視,當(dāng)有第一資源文件發(fā)生狀態(tài)變更時(shí),將更新后的第一資源文件加載到內(nèi)存中,通過(guò)讀取到內(nèi)存中的更新后的第一資源文件實(shí)現(xiàn)對(duì)資源文件映射表中的第一資源文件的更新,上述第一資源文件的加載并不需要退出正在運(yùn)行的程序,通過(guò)資源文件映射表就可以快速瀏覽到更新后的第一資源文件,本發(fā)明實(shí)施例中可以實(shí)現(xiàn)對(duì)資源文件的熱加載,無(wú)需退出正在運(yùn)行的程序即可完成資源文件的加載過(guò)程。

本發(fā)明實(shí)施例還提供了另一種終端,如圖4所示,為了便于說(shuō)明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分,具體技術(shù)細(xì)節(jié)未揭示的,請(qǐng)參照本發(fā)明實(shí)施例方法部分。該終端可以為包括手機(jī)、平板電腦、PDA(Personal Digital Assistant,個(gè)人數(shù)字助理)、POS(Point of Sales,銷(xiāo)售終端)、車(chē)載電腦等任意終端設(shè)備,以終端為手機(jī)為例:

圖4示出的是與本發(fā)明實(shí)施例提供的終端相關(guān)的手機(jī)的部分結(jié)構(gòu)的框圖。參考圖4,手機(jī)包括:射頻(Radio Frequency,RF)電路1010、存儲(chǔ)器1020、輸入單元1030、顯示單元1040、傳感器1050、音頻電路1060、無(wú)線(xiàn)保真(wireless fidelity,WiFi)模塊1070、處理器1080、以及電源1090等部件。本領(lǐng)域技術(shù)人員可以理解,圖4中示出的手機(jī)結(jié)構(gòu)并不構(gòu)成對(duì)手機(jī)的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件布置。

下面結(jié)合圖4對(duì)手機(jī)的各個(gè)構(gòu)成部件進(jìn)行具體的介紹:

RF電路1010可用于收發(fā)信息或通話(huà)過(guò)程中,信號(hào)的接收和發(fā)送,特別地,將基站的下行信息接收后,給處理器1080處理;另外,將設(shè)計(jì)上行的數(shù)據(jù)發(fā)送給基站。通常,RF電路1010包括但不限于天線(xiàn)、至少一個(gè)放大器、收發(fā)信機(jī)、耦合器、低噪聲放大器(Low Noise Amplifier,LNA)、雙工器等。此外,RF電路1010還可以通過(guò)無(wú)線(xiàn)通信與網(wǎng)絡(luò)和其他設(shè)備通信。上述無(wú)線(xiàn)通信可以使用任一通信標(biāo)準(zhǔn)或協(xié)議,包括但不限于全球移動(dòng)通訊系統(tǒng)(Global System of Mobile communication,GSM)、通用分組無(wú)線(xiàn)服務(wù)(General Packet Radio Service,GPRS)、碼分多址(Code Division Multiple Access,CDMA)、寬帶碼分多址(Wideband Code Division Multiple Access,WCDMA)、長(zhǎng)期演進(jìn)(Long Term Evolution,LTE)、電子郵件、短消息服務(wù)(Short Messaging Service,SMS)等。

存儲(chǔ)器1020可用于存儲(chǔ)軟件程序以及模塊,處理器1080通過(guò)運(yùn)行存儲(chǔ)在存儲(chǔ)器1020的軟件程序以及模塊,從而執(zhí)行手機(jī)的各種功能應(yīng)用以及數(shù)據(jù)處理。存儲(chǔ)器1020可主要包括存儲(chǔ)程序區(qū)和存儲(chǔ)數(shù)據(jù)區(qū),其中,存儲(chǔ)程序區(qū)可存儲(chǔ)操作系統(tǒng)、至少一個(gè)功能所需的應(yīng)用程序(比如聲音播放功能、圖像播放功能等)等;存儲(chǔ)數(shù)據(jù)區(qū)可存儲(chǔ)根據(jù)手機(jī)的使用所創(chuàng)建的數(shù)據(jù)(比如音頻數(shù)據(jù)、電話(huà)本等)等。此外,存儲(chǔ)器1020可以包括高速隨機(jī)存取存儲(chǔ)器,還可以包括非易失性存儲(chǔ)器,例如至少一個(gè)磁盤(pán)存儲(chǔ)器件、閃存器件、或其他易失性固態(tài)存儲(chǔ)器件。

輸入單元1030可用于接收輸入的數(shù)字或字符信息,以及產(chǎn)生與手機(jī)的用戶(hù)設(shè)置以及功能控制有關(guān)的鍵信號(hào)輸入。具體地,輸入單元1030可包括觸控面板1031以及其他輸入設(shè)備1032。觸控面板1031,也稱(chēng)為觸摸屏,可收集用戶(hù)在其上或附近的觸摸操作(比如用戶(hù)使用手指、觸筆等任何適合的物體或附件在觸控面板1031上或在觸控面板1031附近的操作),并根據(jù)預(yù)先設(shè)定的程式驅(qū)動(dòng)相應(yīng)的連接裝置??蛇x的,觸控面板1031可包括觸摸檢測(cè)裝置和觸摸控制器兩個(gè)部分。其中,觸摸檢測(cè)裝置檢測(cè)用戶(hù)的觸摸方位,并檢測(cè)觸摸操作帶來(lái)的信號(hào),將信號(hào)傳送給觸摸控制器;觸摸控制器從觸摸檢測(cè)裝置上接收觸摸信息,并將它轉(zhuǎn)換成觸點(diǎn)坐標(biāo),再送給處理器1080,并能接收處理器1080發(fā)來(lái)的命令并加以執(zhí)行。此外,可以采用電阻式、電容式、紅外線(xiàn)以及表面聲波等多種類(lèi)型實(shí)現(xiàn)觸控面板1031。除了觸控面板1031,輸入單元1030還可以包括其他輸入設(shè)備1032。具體地,其他輸入設(shè)備1032可以包括但不限于物理鍵盤(pán)、功能鍵(比如音量控制按鍵、開(kāi)關(guān)按鍵等)、軌跡球、鼠標(biāo)、操作桿等中的一種或多種。

顯示單元1040可用于顯示由用戶(hù)輸入的信息或提供給用戶(hù)的信息以及手機(jī)的各種菜單。顯示單元1040可包括顯示面板1041,可選的,可以采用液晶顯示器(Liquid Crystal Display,LCD)、有機(jī)發(fā)光二極管(Organic Light-Emitting Diode,OLED)等形式來(lái)配置顯示面板1041。進(jìn)一步的,觸控面板1031可覆蓋顯示面板1041,當(dāng)觸控面板1031檢測(cè)到在其上或附近的觸摸操作后,傳送給處理器1080以確定觸摸事件的類(lèi)型,隨后處理器1080根據(jù)觸摸事件的類(lèi)型在顯示面板1041上提供相應(yīng)的視覺(jué)輸出。雖然在圖4中,觸控面板1031與顯示面板1041是作為兩個(gè)獨(dú)立的部件來(lái)實(shí)現(xiàn)手機(jī)的輸入和輸入功能,但是在某些實(shí)施例中,可以將觸控面板1031與顯示面板1041集成而實(shí)現(xiàn)手機(jī)的輸入和輸出功能。

手機(jī)還可包括至少一種傳感器1050,比如光傳感器、運(yùn)動(dòng)傳感器以及其他傳感器。具體地,光傳感器可包括環(huán)境光傳感器及接近傳感器,其中,環(huán)境光傳感器可根據(jù)環(huán)境光線(xiàn)的明暗來(lái)調(diào)節(jié)顯示面板1041的亮度,接近傳感器可在手機(jī)移動(dòng)到耳邊時(shí),關(guān)閉顯示面板1041和/或背光。作為運(yùn)動(dòng)傳感器的一種,加速計(jì)傳感器可檢測(cè)各個(gè)方向上(一般為三軸)加速度的大小,靜止時(shí)可檢測(cè)出重力的大小及方向,可用于識(shí)別手機(jī)姿態(tài)的應(yīng)用(比如橫豎屏切換、相關(guān)游戲、磁力計(jì)姿態(tài)校準(zhǔn))、振動(dòng)識(shí)別相關(guān)功能(比如計(jì)步器、敲擊)等;至于手機(jī)還可配置的陀螺儀、氣壓計(jì)、濕度計(jì)、溫度計(jì)、紅外線(xiàn)傳感器等其他傳感器,在此不再贅述。

音頻電路1060、揚(yáng)聲器1061,傳聲器1062可提供用戶(hù)與手機(jī)之間的音頻接口。音頻電路1060可將接收到的音頻數(shù)據(jù)轉(zhuǎn)換后的電信號(hào),傳輸?shù)綋P(yáng)聲器1061,由揚(yáng)聲器1061轉(zhuǎn)換為聲音信號(hào)輸出;另一方面,傳聲器1062將收集的聲音信號(hào)轉(zhuǎn)換為電信號(hào),由音頻電路1060接收后轉(zhuǎn)換為音頻數(shù)據(jù),再將音頻數(shù)據(jù)輸出處理器1080處理后,經(jīng)RF電路1010以發(fā)送給比如另一手機(jī),或者將音頻數(shù)據(jù)輸出至存儲(chǔ)器1020以便進(jìn)一步處理。

WiFi屬于短距離無(wú)線(xiàn)傳輸技術(shù),手機(jī)通過(guò)WiFi模塊1070可以幫助用戶(hù)收發(fā)電子郵件、瀏覽網(wǎng)頁(yè)和訪(fǎng)問(wèn)流式媒體等,它為用戶(hù)提供了無(wú)線(xiàn)的寬帶互聯(lián)網(wǎng)訪(fǎng)問(wèn)。雖然圖4示出了WiFi模塊1070,但是可以理解的是,其并不屬于手機(jī)的必須構(gòu)成,完全可以根據(jù)需要在不改變發(fā)明的本質(zhì)的范圍內(nèi)而省略。

處理器1080是手機(jī)的控制中心,利用各種接口和線(xiàn)路連接整個(gè)手機(jī)的各個(gè)部分,通過(guò)運(yùn)行或執(zhí)行存儲(chǔ)在存儲(chǔ)器1020內(nèi)的軟件程序和/或模塊,以及調(diào)用存儲(chǔ)在存儲(chǔ)器1020內(nèi)的數(shù)據(jù),執(zhí)行手機(jī)的各種功能和處理數(shù)據(jù),從而對(duì)手機(jī)進(jìn)行整體監(jiān)控。可選的,處理器1080可包括一個(gè)或多個(gè)處理單元;優(yōu)選的,處理器1080可集成應(yīng)用處理器和調(diào)制解調(diào)處理器,其中,應(yīng)用處理器主要處理操作系統(tǒng)、用戶(hù)界面和應(yīng)用程序等,調(diào)制解調(diào)處理器主要處理無(wú)線(xiàn)通信。可以理解的是,上述調(diào)制解調(diào)處理器也可以不集成到處理器1080中。

手機(jī)還包括給各個(gè)部件供電的電源1090(比如電池),優(yōu)選的,電源可以通過(guò)電源管理系統(tǒng)與處理器1080邏輯相連,從而通過(guò)電源管理系統(tǒng)實(shí)現(xiàn)管理充電、放電、以及功耗管理等功能。

盡管未示出,手機(jī)還可以包括攝像頭、藍(lán)牙模塊等,在此不再贅述。

在本發(fā)明實(shí)施例中,該終端所包括的處理器1080還具有控制執(zhí)行以上由終端執(zhí)行的的資源文件的加載方法步驟。

另外需說(shuō)明的是,以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。另外,本發(fā)明提供的裝置實(shí)施例附圖中,模塊之間的連接關(guān)系表示它們之間具有通信連接,具體可以實(shí)現(xiàn)為一條或多條通信總線(xiàn)或信號(hào)線(xiàn)。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動(dòng)的情況下,即可以理解并實(shí)施。

通過(guò)以上的實(shí)施方式的描述,所屬領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)專(zhuān)用硬件包括專(zhuān)用集成電路、專(zhuān)用CPU、專(zhuān)用存儲(chǔ)器、專(zhuān)用元器件等來(lái)實(shí)現(xiàn)。一般情況下,凡由計(jì)算機(jī)程序完成的功能都可以很容易地用相應(yīng)的硬件來(lái)實(shí)現(xiàn),而且,用來(lái)實(shí)現(xiàn)同一功能的具體硬件結(jié)構(gòu)也可以是多種多樣的,例如模擬電路、數(shù)字電路或?qū)S秒娐返?。但是,?duì)本發(fā)明而言更多情況下軟件程序?qū)崿F(xiàn)是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在可讀取的存儲(chǔ)介質(zhì)中,如計(jì)算機(jī)的軟盤(pán),U盤(pán)、移動(dòng)硬盤(pán)、只讀存儲(chǔ)器(ROM,Read-Only Memory)、隨機(jī)存取存儲(chǔ)器(RAM,Random Access Memory)、磁碟或者光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。

綜上所述,以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡管參照上述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對(duì)上述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
丹阳市| 黄平县| 宾阳县| 辛集市| 隆德县| 大兴区| 紫阳县| 南宫市| 托克托县| 元朗区| 新兴县| 独山县| 昌黎县| 平度市| 仁布县| 长丰县| 噶尔县| 澄城县| 益阳市| 资源县| 辽宁省| 临江市| 潞城市| 郯城县| 图木舒克市| 于都县| 桓仁| 南通市| 金寨县| 嘉黎县| 滕州市| 同江市| 思南县| 漾濞| 开封县| 绥化市| 九龙坡区| 色达县| 上饶市| 中牟县| 贵阳市|