視圖切換方法和裝置制造方法
【專(zhuān)利摘要】本發(fā)明提供了一種視圖切換方法和裝置。所述方法包括:偵聽(tīng)得到應(yīng)用界面中的視圖切換操作;銷(xiāo)毀視圖切換操作所對(duì)應(yīng)的當(dāng)前視圖;通過(guò)調(diào)用視圖管理類(lèi)創(chuàng)建視圖切換操作中目標(biāo)視圖所對(duì)應(yīng)的視圖對(duì)象;通過(guò)視圖控制器對(duì)視圖對(duì)象進(jìn)行賦值,將賦值后的視圖對(duì)象呈現(xiàn)于應(yīng)用界面,以顯示目標(biāo)視圖。所述裝置包括:偵聽(tīng)模塊,用于偵聽(tīng)得到應(yīng)用界面中的視圖切換操作;當(dāng)前視圖處理模塊,用于銷(xiāo)毀視圖切換操作所對(duì)應(yīng)的當(dāng)前視圖;對(duì)象創(chuàng)建模塊,用于通過(guò)調(diào)用視圖管理類(lèi)創(chuàng)建所述視圖切換操作中目標(biāo)視圖所對(duì)應(yīng)的視圖對(duì)象;顯示控制模塊,用于通過(guò)視圖控制器對(duì)視圖對(duì)象進(jìn)行賦值,將賦值后的視圖對(duì)象呈現(xiàn)于應(yīng)用界面,以顯示目標(biāo)視圖。采用本發(fā)明能降低內(nèi)存資源消耗。
【專(zhuān)利說(shuō)明】視圖切換方法和裝置
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及圖形應(yīng)用技術(shù),特別是涉及視圖切換方法和裝置。
【背景技術(shù)】
[0002] 應(yīng)用運(yùn)行于電子設(shè)備中,并通過(guò)將視圖顯示于電子設(shè)備的屏幕來(lái)實(shí)現(xiàn)各種功能, 或者供用戶(hù)觸發(fā)操作事件的圖形界面。運(yùn)行的應(yīng)用常同時(shí)持有若干個(gè)視圖,根據(jù)用戶(hù)的切 換操作使得屏幕顯示的視圖由當(dāng)前視圖跳轉(zhuǎn)至相應(yīng)的另一視圖,并且還可根據(jù)用戶(hù)再次觸 發(fā)的切換操作跳轉(zhuǎn)回到當(dāng)前視圖。
[0003] 運(yùn)行的應(yīng)用所同時(shí)持有的視圖將分別對(duì)應(yīng)了相應(yīng)的視圖對(duì)象,S卩,每一視圖均有 與之對(duì)應(yīng)的視圖對(duì)象,進(jìn)而使得同時(shí)開(kāi)啟了多個(gè)視圖的應(yīng)用必將存在多個(gè)視圖對(duì)象停留于 電子設(shè)備的內(nèi)存中,造成內(nèi)存資源消耗過(guò)大的問(wèn)題。
【發(fā)明內(nèi)容】
[0004] 基于此,針對(duì)多個(gè)視圖對(duì)象停留于內(nèi)存中,造成內(nèi)存資源消耗過(guò)大的技術(shù)問(wèn)題,有 必要提供一種能降低內(nèi)存資源消耗的視圖切換方法。
[0005] 此外,還有必要提供一種能降低內(nèi)存資源消耗的視圖切換裝置。
[0006] -種視圖切換方法,包括如下步驟:
[0007] 偵聽(tīng)得到應(yīng)用界面中的視圖切換操作;
[0008] 銷(xiāo)毀所述視圖切換操作所對(duì)應(yīng)的當(dāng)前視圖;
[0009] 通過(guò)調(diào)用視圖管理類(lèi)創(chuàng)建所述視圖切換操作中目標(biāo)視圖所對(duì)應(yīng)的視圖對(duì)象;
[0010] 通過(guò)視圖控制器對(duì)視圖對(duì)象進(jìn)行賦值,將賦值后的視圖對(duì)象呈現(xiàn)于應(yīng)用界面,以 顯示目標(biāo)視圖。
[0011] 一種視圖切換裝置,包括:
[0012] 偵聽(tīng)模塊,用于偵聽(tīng)得到應(yīng)用界面中的視圖切換操作;
[0013] 當(dāng)前視圖處理模塊,用于銷(xiāo)毀所述視圖切換操作所對(duì)應(yīng)的當(dāng)前視圖;
[0014] 對(duì)象創(chuàng)建模塊,用于通過(guò)調(diào)用視圖管理類(lèi)創(chuàng)建所述視圖切換操作中目標(biāo)視圖所對(duì) 應(yīng)的視圖對(duì)象;
[0015] 顯示控制模塊,用于通過(guò)視圖控制器對(duì)視圖對(duì)象進(jìn)行賦值,將賦值后的視圖對(duì)象 呈現(xiàn)于應(yīng)用界面,以顯示目標(biāo)視圖。
[0016] 上述視圖切換方法和裝置,在偵聽(tīng)得到應(yīng)用界面中的視圖切換操作時(shí),銷(xiāo)毀視圖 切換操作所對(duì)應(yīng)的當(dāng)前視圖,通過(guò)調(diào)用視圖管理類(lèi)創(chuàng)建所述視圖切換操作中目標(biāo)視圖對(duì)應(yīng) 的視圖對(duì)象,進(jìn)而通過(guò)視圖控制器在應(yīng)用界面中為視圖對(duì)象賦值,以顯示創(chuàng)建的視圖對(duì)象 所對(duì)應(yīng)的目標(biāo)視圖,使得應(yīng)用界面觸發(fā)了視圖切換操作時(shí)動(dòng)態(tài)創(chuàng)建目標(biāo)視圖所對(duì)應(yīng)的視圖 對(duì)象,而不需要目標(biāo)視圖所對(duì)應(yīng)的視圖對(duì)象停留于電子設(shè)備的內(nèi)存中,降低了內(nèi)存資源消 耗,進(jìn)而避免大量視圖對(duì)象停留內(nèi)存所造成的視圖之間切換混亂的缺陷,有效提高應(yīng)用界 面響應(yīng)操作的流暢性。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0017] 圖1為一個(gè)實(shí)施例中視圖切換方法的流程圖;
[0018] 圖2為圖1中銷(xiāo)毀視圖切換操作所對(duì)應(yīng)的當(dāng)前視圖的方法流程圖;
[0019] 圖3為圖1中通過(guò)調(diào)用視圖管理類(lèi)創(chuàng)建視圖切換操作中目標(biāo)視圖所對(duì)應(yīng)的視圖對(duì) 象的方法流程圖;
[0020] 圖4為另一個(gè)實(shí)施例中視圖切換方法的流程圖;
[0021] 圖5為一個(gè)實(shí)施例中視圖切換裝置的結(jié)構(gòu)示意圖;
[0022] 圖6為圖5中當(dāng)前視圖處理模塊的結(jié)構(gòu)示意圖;
[0023] 圖7為圖5中對(duì)象創(chuàng)建模塊的結(jié)構(gòu)示意圖;
[0024] 圖8為另一個(gè)實(shí)施例中視圖切換裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0025] 如圖1所示,在一個(gè)實(shí)施例中,一種視圖切換方法,包括如下步驟:
[0026] 步驟S110,偵聽(tīng)得到應(yīng)用界面中的視圖切換操作。
[0027] 本實(shí)施例中,運(yùn)行的應(yīng)用開(kāi)啟了至少兩個(gè)視圖,且其中的任意一個(gè)視圖被顯示于 該應(yīng)用所在的應(yīng)用界面中。偵聽(tīng)得到的視圖切換操作是用戶(hù)期望在應(yīng)用界面中查看當(dāng)前未 顯示于應(yīng)用界面的視圖所觸發(fā)的操作。
[0028] 具體的,偵聽(tīng)?wèi)?yīng)用界面是否被觸發(fā),在偵聽(tīng)到應(yīng)用界面被觸發(fā)之后,將判定當(dāng)前觸 發(fā)應(yīng)用界面的操作是否為視圖切換操作。
[0029] 步驟S130,銷(xiāo)毀視圖切換操作所對(duì)應(yīng)的當(dāng)前視圖。
[0030] 本實(shí)施例中,在視圖管理類(lèi)的作用下銷(xiāo)毀應(yīng)用界面中顯示的當(dāng)前視圖,以使得當(dāng) 前視圖所對(duì)應(yīng)的視圖對(duì)象也被銷(xiāo)毀,而不會(huì)停留于內(nèi)存中。
[0031] 步驟S150,通過(guò)調(diào)用視圖管理類(lèi)創(chuàng)建視圖切換操作中目標(biāo)視圖所對(duì)應(yīng)的視圖對(duì) 象。
[0032] 本實(shí)施例中,該視圖管理類(lèi)用于控制視圖對(duì)象的創(chuàng)建和銷(xiāo)毀。從觸發(fā)應(yīng)用界面的 視圖切換操作得到用戶(hù)期望進(jìn)行視圖切換的目標(biāo)視圖,進(jìn)而調(diào)用視圖管理類(lèi)進(jìn)行視圖對(duì)象 的創(chuàng)建。
[0033] 步驟S170,通過(guò)視圖控制器對(duì)視圖對(duì)象進(jìn)行賦值,將賦值后的視圖對(duì)象呈現(xiàn)于應(yīng) 用界面,以顯示目標(biāo)視圖。
[0034] 本實(shí)施例中,通過(guò)視圖控制器對(duì)目標(biāo)視圖在應(yīng)用界面的顯示進(jìn)行控制,,獲取創(chuàng)建 的視圖對(duì)象所對(duì)應(yīng)的數(shù)據(jù),對(duì)創(chuàng)建的視圖對(duì)象進(jìn)行賦值,以在應(yīng)用界面中顯示目標(biāo)視圖。
[0035] 向視圖對(duì)象進(jìn)行賦值的數(shù)據(jù)用于指示視圖之間以及對(duì)應(yīng)的視圖中的層次關(guān)系、視 圖中的內(nèi)容以及圖片等,通過(guò)對(duì)視圖對(duì)象的賦值即可實(shí)現(xiàn)目標(biāo)視圖的繪制,進(jìn)而顯示目標(biāo) 視圖。
[0036] 進(jìn)一步的,一個(gè)視圖控制器可控制一個(gè)或多個(gè)視圖對(duì)象,也就是說(shuō),在觸發(fā)了視圖 切換操作之后,將載入新的目標(biāo)視圖,以替換顯示界面中的視圖,此時(shí),可創(chuàng)建一個(gè)新的視 圖控制器對(duì)載入的目標(biāo)視圖所對(duì)應(yīng)的視圖對(duì)象進(jìn)行控制,也可以使用現(xiàn)有的視圖控制器實(shí) 現(xiàn)視圖對(duì)象的控制。
[0037] 但是,為避免視圖控制器中代碼量的增加和破壞視圖控制器的結(jié)構(gòu),在優(yōu)選的實(shí) 施例中,創(chuàng)建新的視圖控制器來(lái)對(duì)載入的目標(biāo)視圖所對(duì)應(yīng)的視圖對(duì)象進(jìn)行賦值,并顯示目 標(biāo)視圖。
[0038] 上述視圖切換方法,通過(guò)視圖管理類(lèi)實(shí)現(xiàn)視圖對(duì)象的動(dòng)態(tài)創(chuàng)建,使得視圖控制器 只需要控制視圖對(duì)象的顯示即可,避免了應(yīng)用視圖控制器來(lái)實(shí)現(xiàn)與視圖對(duì)象相關(guān)的復(fù)雜邏 輯,也就是說(shuō),視圖控制器只需要對(duì)創(chuàng)建的視圖對(duì)象進(jìn)行賦值,并通過(guò)賦值后的視圖對(duì)象進(jìn) 行顯示,以響應(yīng)各種邏輯處理事件,進(jìn)一步地避免了視圖之間切換的混亂,減少資源消耗, 也簡(jiǎn)化了視圖控制器的結(jié)構(gòu)和代碼量。
[0039] 如圖2所示,在一個(gè)實(shí)施例中,上述步驟S130包括:
[0040] 步驟S131,通過(guò)視圖管理類(lèi)銷(xiāo)毀當(dāng)前視圖對(duì)應(yīng)的視圖對(duì)象,并保存銷(xiāo)毀的視圖對(duì) 象對(duì)應(yīng)的狀態(tài)信息,使當(dāng)前視圖從應(yīng)用界面中移除。
[0041] 本實(shí)施例中,在視圖管理類(lèi)的作用下,獲取當(dāng)前視圖的視圖對(duì)象所對(duì)應(yīng)的狀態(tài)信 息,進(jìn)而在銷(xiāo)毀當(dāng)前視圖的視圖對(duì)象時(shí)保存該獲取的狀態(tài)信息。視圖對(duì)象所對(duì)應(yīng)的狀態(tài)信 息用于指示當(dāng)前視圖在應(yīng)用界面中的顯示狀態(tài)。例如,視圖對(duì)象所對(duì)應(yīng)的狀態(tài)信息包括當(dāng) 前視圖的橫向偏移量和縱向偏移量、當(dāng)前視圖中控件的顯示狀態(tài)等。
[0042] 通過(guò)保存的視圖對(duì)象對(duì)應(yīng)的狀態(tài)信息將使得后續(xù)的視圖切換過(guò)程中再跳轉(zhuǎn)回到 當(dāng)前視圖時(shí)仍然能夠恢復(fù)至切換前的顯示狀態(tài),使得用戶(hù)能夠順暢地繼續(xù)查看該視圖,也 減少了視圖的初始化過(guò)程,提高了視圖切換的速度。
[0043] 步驟S133,將銷(xiāo)毀的視圖對(duì)象的狀態(tài)信息更新至視圖信息樹(shù)中。
[0044] 本實(shí)施例中,視圖信息樹(shù)是根據(jù)應(yīng)用界面中視圖所對(duì)應(yīng)的數(shù)據(jù)構(gòu)建得到的多叉 樹(shù),其中,視圖信息樹(shù)中的每一葉節(jié)點(diǎn)對(duì)應(yīng)存儲(chǔ)著視圖所對(duì)應(yīng)的狀態(tài)信息。
[0045] 將銷(xiāo)毀的視圖對(duì)象的狀態(tài)信息更新到視圖信息樹(shù)中,使得應(yīng)用在進(jìn)行視圖切換時(shí) 即便不在內(nèi)存中保存開(kāi)啟的視圖所對(duì)應(yīng)的視圖對(duì)象,也能夠再次跳轉(zhuǎn)回到當(dāng)前已經(jīng)離開(kāi)的 視圖,快速地實(shí)現(xiàn)視圖之間的來(lái)回跳轉(zhuǎn),以再次跳轉(zhuǎn)回到上一次離開(kāi)時(shí)視圖所呈現(xiàn)的界面, 用戶(hù)不需要再次進(jìn)行手動(dòng)的查找定位。采用這一方式所實(shí)現(xiàn)的視圖切換將有效地降低了內(nèi) 存消耗,提高了應(yīng)用程序的性能,同時(shí)也加快了視圖的切換速度。
[0046] 如圖3所示,在一個(gè)實(shí)施例中,上述步驟S150包括:
[0047] 步驟S151,通過(guò)視圖管理類(lèi)從視圖切換操作得到目標(biāo)視圖標(biāo)識(shí),并根據(jù)目標(biāo)視圖 標(biāo)識(shí)獲取所述目標(biāo)視圖在視圖信息樹(shù)中的路徑。
[0048] 本實(shí)施例中,應(yīng)用界面中觸發(fā)了視圖切換操作之后,將調(diào)用相應(yīng)的響應(yīng)接口,即視 圖管理類(lèi),進(jìn)而在視圖管理類(lèi)的作用下從視圖切換操作得到目標(biāo)視圖標(biāo)識(shí),以根據(jù)目標(biāo)視 圖標(biāo)識(shí)得到目標(biāo)視圖所對(duì)應(yīng)的狀態(tài)信息在視圖信息樹(shù)中的路徑,從而通過(guò)該路徑即可獲知 目標(biāo)視圖所對(duì)應(yīng)的數(shù)據(jù)位于視圖信息樹(shù)的哪一個(gè)葉節(jié)點(diǎn)上。
[0049] 具體的,視圖信息樹(shù)包括了若干個(gè)葉節(jié)點(diǎn),每一葉節(jié)點(diǎn)是與應(yīng)用界面所開(kāi)啟的視 圖一一對(duì)應(yīng)的,并存儲(chǔ)著視圖所對(duì)應(yīng)的狀態(tài)信息,該狀態(tài)信息用于指示相應(yīng)視圖在應(yīng)用界 面中的顯示狀態(tài);視圖信息樹(shù)中每一節(jié)點(diǎn)都有相應(yīng)的指示器,上一級(jí)的指示器與下一級(jí)的 指示器聯(lián)合起來(lái)即可構(gòu)建得到用戶(hù)由根節(jié)點(diǎn)到相應(yīng)葉節(jié)點(diǎn)的路徑。在通過(guò)視圖管理類(lèi)從視 圖切換操作得到目標(biāo)視圖標(biāo)識(shí)之后,開(kāi)啟視圖信息樹(shù)的指示器,進(jìn)而得到該指示器所指示 的分支路徑。
[0050] 步驟S153,根據(jù)路徑從視圖信息樹(shù)中提取目標(biāo)視圖對(duì)應(yīng)的狀態(tài)信息。
[0051] 本實(shí)施例中,按照獲取得到的路徑得到目標(biāo)視圖在視圖信息樹(shù)上的葉節(jié)點(diǎn),進(jìn)而 從得到的葉節(jié)點(diǎn)中提取目標(biāo)視圖所對(duì)應(yīng)的狀態(tài)信息,該狀態(tài)信息即為目標(biāo)視圖對(duì)應(yīng)的視圖 對(duì)象的顯示狀態(tài)。
[0052] 步驟S155,調(diào)用視圖管理類(lèi)中的創(chuàng)建視圖函數(shù)應(yīng)用目標(biāo)視圖對(duì)應(yīng)的狀態(tài)信息創(chuàng)建 目標(biāo)視圖對(duì)應(yīng)的視圖對(duì)象。
[0053] 本實(shí)施例中,由于觸發(fā)了視圖的切換,需要針對(duì)應(yīng)用界面所觸發(fā)的視圖切換操作 動(dòng)態(tài)創(chuàng)建相應(yīng)的視圖對(duì)象,該視圖對(duì)象是與視圖切換操作的目標(biāo)視圖相對(duì)應(yīng)的。
[0054] 調(diào)用視圖管理類(lèi)中的創(chuàng)建視圖函數(shù),以目標(biāo)視圖對(duì)應(yīng)狀態(tài)信息作為創(chuàng)建視圖函數(shù) 的輸入動(dòng)態(tài)創(chuàng)建得到視圖對(duì)象。
[0055] 如圖4所示,在一個(gè)實(shí)施例中,上述步驟S110之前,上述視圖切換方法還包括:
[0056] 步驟S210,通過(guò)觸發(fā)的新建視圖操作獲取新建視圖所請(qǐng)求的數(shù)據(jù)。
[0057] 本實(shí)施例中,觸發(fā)應(yīng)用新建視圖時(shí),將通過(guò)觸發(fā)的新建視圖操作發(fā)起請(qǐng)求,以得到 請(qǐng)求的數(shù)據(jù)。
[0058] 具體的,請(qǐng)求的數(shù)據(jù)是應(yīng)用所對(duì)應(yīng)的后臺(tái)數(shù)據(jù),即與應(yīng)用進(jìn)行交互的服務(wù)器所下 發(fā)的數(shù)據(jù)。例如,若應(yīng)用為運(yùn)行于電子設(shè)備的瀏覽器,該瀏覽器中的視圖切換方法即為瀏覽 器所打開(kāi)的多個(gè)網(wǎng)頁(yè)頁(yè)面之間的切換。此時(shí),觸發(fā)的新建視圖操作即為瀏覽器中的打開(kāi)新 的網(wǎng)頁(yè)頁(yè)面的操作,此時(shí)將向相應(yīng)的后臺(tái)服務(wù)器發(fā)起請(qǐng)求,以得到后臺(tái)服務(wù)器所返回的數(shù) 據(jù),該數(shù)據(jù)是與即將打開(kāi)的網(wǎng)頁(yè)頁(yè)面相關(guān)的。
[0059] 步驟S230,根據(jù)獲取的數(shù)據(jù)更新視圖信息樹(shù),并在視圖信息樹(shù)記錄新建視圖的狀 態(tài)息。
[0060] 本實(shí)施例中,根據(jù)獲取的數(shù)據(jù)可以獲知這一新建視圖所對(duì)應(yīng)的葉節(jié)點(diǎn)在視圖信息 樹(shù)中的上一級(jí)節(jié)點(diǎn),以根據(jù)所述獲取的數(shù)據(jù)對(duì)視圖信息樹(shù)進(jìn)行更新,構(gòu)建新的分支,進(jìn)而在 新構(gòu)建的分支上設(shè)置新建視圖的葉節(jié)點(diǎn),并將新建視圖的狀態(tài)信息記錄于新的葉節(jié)點(diǎn)中。
[0061] 此時(shí),在通過(guò)應(yīng)用界面中的視圖切換操作將新建視圖切換至為當(dāng)前視圖時(shí),將新 建的視圖對(duì)象返回給調(diào)用者,該調(diào)用者可以是視圖控制器,進(jìn)而通過(guò)視圖控制器布設(shè)該視 圖對(duì)象進(jìn)行顯示的位置和層次,以在接收到用戶(hù)在應(yīng)用界面中的視圖切換操作時(shí)進(jìn)行相應(yīng) 視圖的顯示。
[0062] 在一個(gè)實(shí)施例中,上述視圖信息樹(shù)是隨著應(yīng)用界面中視圖的切換動(dòng)態(tài)構(gòu)建的。
[0063] 本實(shí)施例中,視圖信息樹(shù)是在應(yīng)用界面首次開(kāi)啟視圖進(jìn)構(gòu)建的,并隨著視圖的新 建動(dòng)態(tài)構(gòu)建新的分支,隨著視圖的關(guān)閉而關(guān)閉指向相應(yīng)的葉節(jié)點(diǎn)的路徑上的指不器。
[0064] 視圖信息樹(shù)中每條新的分支的構(gòu)建時(shí)機(jī)將各不相同,只有需要顯示該分支上的視 圖時(shí)構(gòu)建該分支,因此,上述視圖信息樹(shù)是根據(jù)實(shí)際需要進(jìn)行動(dòng)態(tài)擴(kuò)展的。
[0065] 如圖5所示,在一個(gè)實(shí)施例中,一種視圖切換裝置,包括偵聽(tīng)模塊110、當(dāng)前視圖處 理模塊130、對(duì)象創(chuàng)建模塊150和顯示控制模塊170。
[0066] 偵聽(tīng)模塊110,用于偵聽(tīng)得到應(yīng)用界面中的視圖切換操作。
[0067] 本實(shí)施例中,運(yùn)行的應(yīng)用開(kāi)啟了至少兩個(gè)視圖,且其中的任意一個(gè)視圖被顯示于 該應(yīng)用所在的應(yīng)用界面中。偵聽(tīng)模塊110偵聽(tīng)得到的視圖切換操作是用戶(hù)期望在應(yīng)用界面 中查看當(dāng)前未顯示于應(yīng)用界面的視圖所觸發(fā)的操作。
[0068] 具體的,偵聽(tīng)模塊110偵聽(tīng)?wèi)?yīng)用界面是否被觸發(fā),在偵聽(tīng)到應(yīng)用界面被觸發(fā)之后, 將判定當(dāng)前觸發(fā)應(yīng)用界面的操作是否為視圖切換操作。
[0069] 當(dāng)前視圖處理模塊130,用于銷(xiāo)毀視圖切換操作所對(duì)應(yīng)的當(dāng)前視圖。
[0070] 本實(shí)施例中,當(dāng)前視圖處理模塊130在視圖管理類(lèi)的作用下銷(xiāo)毀應(yīng)用界面中顯示 的當(dāng)前視圖,以使得當(dāng)前視圖所對(duì)應(yīng)的視圖對(duì)象也被銷(xiāo)毀,而不會(huì)停留于內(nèi)存中。
[0071] 對(duì)象創(chuàng)建模塊150,用于通過(guò)調(diào)用視圖管理類(lèi)創(chuàng)建視圖切換操作中目標(biāo)視圖所對(duì) 應(yīng)的視圖對(duì)象。
[0072] 本實(shí)施例中,該視圖管理類(lèi)用于控制視圖對(duì)象的創(chuàng)建和銷(xiāo)毀。對(duì)象創(chuàng)建模塊150 從觸發(fā)應(yīng)用界面的視圖切換操作得到用戶(hù)期望進(jìn)行視圖切換的目標(biāo)視圖,進(jìn)而調(diào)用視圖管 理類(lèi)進(jìn)行視圖對(duì)象的創(chuàng)建。
[0073] 顯示控制模塊170,用于通過(guò)視圖控制器對(duì)視圖對(duì)象進(jìn)行賦值,將賦值后的視圖對(duì) 象呈現(xiàn)于應(yīng)用界面,以顯示目標(biāo)視圖。
[0074] 本實(shí)施例中,顯示控制模塊170通過(guò)視圖控制器對(duì)目標(biāo)視圖在應(yīng)用界面的顯示進(jìn) 行控制,獲取創(chuàng)建的視圖對(duì)象所對(duì)應(yīng)的數(shù)據(jù),對(duì)創(chuàng)建的視圖對(duì)象進(jìn)行賦值,以在應(yīng)用界面中 顯示目標(biāo)視圖。
[0075] 向視圖對(duì)象進(jìn)行賦值的數(shù)據(jù)用于指示視圖之間以及對(duì)應(yīng)的視圖中的層次關(guān)系、視 圖中的內(nèi)容以及圖片等,通過(guò)向視圖對(duì)象進(jìn)行賦值即可實(shí)現(xiàn)目標(biāo)視圖的繪制,進(jìn)而顯示目 標(biāo)視圖。
[0076] 進(jìn)一步的,一個(gè)視圖控制器可控制一個(gè)或多個(gè)視圖對(duì)象,也就是說(shuō),在觸發(fā)了視圖 切換操作之后,顯示控制模塊170將載入新的目標(biāo)視圖,以替換顯示界面中的視圖,此時(shí), 可創(chuàng)建一個(gè)新的視圖控制器對(duì)載入的目標(biāo)視圖所對(duì)應(yīng)的視圖對(duì)象進(jìn)行控制,也可以使用現(xiàn) 有的視圖控制器實(shí)現(xiàn)視圖對(duì)象的控制。
[0077] 但是,為避免視圖控制器中代碼量的增加和破壞視圖控制器的結(jié)構(gòu),在優(yōu)選的實(shí) 施例中,顯示控制模塊170創(chuàng)建新的視圖控制器來(lái)對(duì)載入的目標(biāo)視圖所對(duì)應(yīng)的視圖對(duì)象進(jìn) 行賦值,并顯示目標(biāo)視圖。
[0078] 上述視圖切換裝置,通過(guò)視圖管理類(lèi)實(shí)現(xiàn)視圖對(duì)象的動(dòng)態(tài)創(chuàng)建,使得視圖控制器 只需要控制視圖對(duì)象的顯示即可,避免了應(yīng)用視圖控制器來(lái)實(shí)現(xiàn)與視圖對(duì)象相關(guān)的復(fù)雜邏 輯,也就是說(shuō),視圖控制器只需要對(duì)創(chuàng)建的視圖對(duì)象進(jìn)行賦值,并通過(guò)賦值后的視圖對(duì)象進(jìn) 行顯示,以響應(yīng)各種邏輯處理事件,進(jìn)一步地避免了視圖之間切換的混亂,減少資源消耗, 也簡(jiǎn)化了視圖控制器的結(jié)構(gòu)和代碼量。
[0079] 如圖6所示,在一個(gè)實(shí)施例中,上述當(dāng)前視圖處理模塊130包括對(duì)象銷(xiāo)毀單元131 和狀態(tài)更新單元133。
[0080] 對(duì)象銷(xiāo)毀單元131,用于通過(guò)視圖管理類(lèi)銷(xiāo)毀當(dāng)前視圖對(duì)應(yīng)的視圖對(duì)象,并保存銷(xiāo) 毀的視圖對(duì)象對(duì)應(yīng)的狀態(tài)信息,使當(dāng)前視圖從應(yīng)用界面中移除。
[0081] 本實(shí)施例中,在視圖管理類(lèi)的作用下,對(duì)象銷(xiāo)毀單元131獲取當(dāng)前視圖的視圖對(duì) 象所對(duì)應(yīng)的狀態(tài)信息,進(jìn)而在銷(xiāo)毀當(dāng)前視圖的視圖對(duì)象時(shí)保存該獲取的狀態(tài)信息。視圖對(duì) 象所對(duì)應(yīng)的狀態(tài)信息用于指示當(dāng)前視圖在應(yīng)用界面中的顯示狀態(tài)。例如,視圖對(duì)象所對(duì)應(yīng) 的狀態(tài)信息包括當(dāng)前視圖的橫向偏移量和縱向偏移量、當(dāng)前視圖中控件的顯示狀態(tài)等。 [0082] 通過(guò)保存的視圖對(duì)象對(duì)應(yīng)的狀態(tài)信息將使得后續(xù)的視圖切換過(guò)程中再跳轉(zhuǎn)回到 當(dāng)前視圖時(shí)仍然能夠恢復(fù)至切換前的顯示狀態(tài),使得用戶(hù)能夠順暢地繼續(xù)查看該視圖,也 減少了視圖的初始化過(guò)程,提高了視圖切換的速度。
[0083] 狀態(tài)更新單元133,用于將銷(xiāo)毀的視圖對(duì)象對(duì)應(yīng)的狀態(tài)信息更新至視圖信息樹(shù)中。
[0084] 本實(shí)施例中,視圖信息樹(shù)是根據(jù)應(yīng)用界面中視圖所對(duì)應(yīng)的數(shù)據(jù)構(gòu)建得到的多叉 樹(shù),其中,視圖信息樹(shù)中的每一葉節(jié)點(diǎn)對(duì)應(yīng)存儲(chǔ)著視圖所對(duì)應(yīng)的狀態(tài)信息。
[0085] 狀態(tài)更新單元133將銷(xiāo)毀的視圖對(duì)象的狀態(tài)信息更新到視圖信息樹(shù)中,使得應(yīng)用 在進(jìn)行視圖切換時(shí)即便不在內(nèi)存中保存開(kāi)啟的視圖所對(duì)應(yīng)的視圖對(duì)象,也能夠再次跳轉(zhuǎn)回 到當(dāng)前已經(jīng)離開(kāi)的視圖,快速地實(shí)現(xiàn)視圖之間的來(lái)回跳轉(zhuǎn),以再次跳轉(zhuǎn)回到上一次離開(kāi)時(shí) 視圖所呈現(xiàn)的界面,用戶(hù)不需要再次進(jìn)行手動(dòng)的查找定位。采用這一方式所實(shí)現(xiàn)的視圖切 換將有效地降低了內(nèi)存消耗,提高了應(yīng)用程序的性能,同時(shí)也加快了視圖的切換速度。
[0086] 如圖7所示,在一個(gè)實(shí)施例中,上述對(duì)象創(chuàng)建模塊150包括路徑獲取單元151、提取 單元153和對(duì)象創(chuàng)建單元155。
[0087] 路徑獲取單元151,用于通過(guò)視圖管理類(lèi)從視圖切換操作得到目標(biāo)視圖標(biāo)識(shí),并根 據(jù)目標(biāo)視圖標(biāo)識(shí)獲取目標(biāo)視圖在視圖信息樹(shù)中的路徑。
[0088] 本實(shí)施例中,應(yīng)用界面中觸發(fā)了視圖切換操作之后,路徑獲取單元151將調(diào)用相 應(yīng)的響應(yīng)接口,即視圖管理類(lèi),進(jìn)而在視圖管理類(lèi)的作用下從視圖切換操作得到目標(biāo)視圖 標(biāo)識(shí),以根據(jù)目標(biāo)視圖標(biāo)識(shí)得到目標(biāo)視圖所對(duì)應(yīng)的狀態(tài)信息在視圖信息樹(shù)中的路徑,從而 通過(guò)該路徑即可獲知目標(biāo)視圖所對(duì)應(yīng)的數(shù)據(jù)位于視圖信息樹(shù)的哪一個(gè)葉節(jié)點(diǎn)上。
[0089] 具體的,視圖信息樹(shù)包括了若干個(gè)葉節(jié)點(diǎn),每一葉節(jié)點(diǎn)是與應(yīng)用界面所開(kāi)啟的視 圖一一對(duì)應(yīng)的,并存儲(chǔ)著視圖所對(duì)應(yīng)的狀態(tài)信息,該狀態(tài)信息用于指示相應(yīng)視圖在應(yīng)用界 面中的顯示狀態(tài);視圖信息樹(shù)中每一節(jié)點(diǎn)都有相應(yīng)的指示器,上一級(jí)的指示器與下一級(jí)的 指示器聯(lián)合起來(lái)即可構(gòu)建得到用戶(hù)由根節(jié)點(diǎn)到相應(yīng)葉節(jié)點(diǎn)的路徑。。
[0090] 在通過(guò)視圖管理類(lèi)從視圖切換操作得到目標(biāo)視圖標(biāo)識(shí)之后,路徑獲取單元151開(kāi) 啟視圖信息樹(shù)的指示器,進(jìn)而得到該指示器所指示的分支路徑。
[0091] 提取單元153,用于根據(jù)路徑從視圖信息中提取目標(biāo)視圖所對(duì)應(yīng)的狀態(tài)信息。
[0092] 本實(shí)施例中,提取單元153按照獲取得到的路徑得到目標(biāo)視圖在視圖信息樹(shù)上的 葉節(jié)點(diǎn),進(jìn)而從得到的葉節(jié)點(diǎn)中提取目標(biāo)視圖所對(duì)應(yīng)的狀態(tài)信息,該狀態(tài)信息即為目標(biāo)視 圖對(duì)應(yīng)的視圖對(duì)象的顯示狀態(tài)。
[0093] 對(duì)象創(chuàng)建單元155,用于調(diào)用視圖管理類(lèi)中的創(chuàng)建視圖函數(shù)應(yīng)用目標(biāo)視圖對(duì)應(yīng)的 狀態(tài)信息創(chuàng)建目標(biāo)視圖對(duì)應(yīng)的視圖對(duì)象。
[0094] 本實(shí)施例中,由于觸發(fā)了視圖的切換,需要針對(duì)應(yīng)用界面所觸發(fā)的視圖切換操作 動(dòng)態(tài)創(chuàng)建相應(yīng)的視圖對(duì)象,該視圖對(duì)象是與視圖切換操作的目標(biāo)視圖相對(duì)應(yīng)的。
[0095] 對(duì)象創(chuàng)建單元155調(diào)用視圖管理類(lèi)中的創(chuàng)建視圖函數(shù),以目標(biāo)視圖對(duì)應(yīng)的數(shù)據(jù)和 狀態(tài)作為創(chuàng)建視圖函數(shù)的輸入動(dòng)態(tài)創(chuàng)建得到視圖對(duì)象。
[0096] 如圖8所示,在一個(gè)實(shí)施例中,上述視圖切換裝置還包括數(shù)據(jù)獲取模塊210和數(shù)據(jù) 更新模塊230。
[0097] 數(shù)據(jù)獲取模塊210,用于通過(guò)觸發(fā)的新建視圖操作獲取新建視圖所請(qǐng)求的數(shù)據(jù)。
[0098] 本實(shí)施例中,觸發(fā)應(yīng)用新建視圖時(shí),數(shù)據(jù)獲取模塊210將通過(guò)觸發(fā)的新建視圖操 作發(fā)起請(qǐng)求,以得到請(qǐng)求的數(shù)據(jù)。
[0099] 具體的,數(shù)據(jù)獲取模塊210請(qǐng)求的數(shù)據(jù)是應(yīng)用所對(duì)應(yīng)的后臺(tái)數(shù)據(jù),即與應(yīng)用進(jìn)行 交互的服務(wù)器所下發(fā)的數(shù)據(jù)。例如,若應(yīng)用為運(yùn)行于電子設(shè)備的瀏覽器,該瀏覽器中的視圖 切換方法即為瀏覽器所打開(kāi)的多個(gè)網(wǎng)頁(yè)頁(yè)面之間的切換。此時(shí),觸發(fā)的新建視圖操作即為 瀏覽器中的打開(kāi)新的網(wǎng)頁(yè)頁(yè)面的操作,此時(shí)數(shù)據(jù)獲取模塊210將向相應(yīng)的后臺(tái)服務(wù)器發(fā)起 請(qǐng)求,以得到后臺(tái)服務(wù)器所返回的數(shù)據(jù),該數(shù)據(jù)是與即將打開(kāi)的網(wǎng)頁(yè)頁(yè)面相關(guān)的。
[0100] 數(shù)據(jù)更新模塊230,用于根據(jù)獲取的數(shù)據(jù)更新至視圖信息樹(shù),并在視圖信息樹(shù)記錄 新建視圖的狀態(tài)信息。
[0101] 本實(shí)施例中,數(shù)據(jù)更新模塊230根據(jù)獲取的數(shù)據(jù)可以獲知這一新建視圖所對(duì)應(yīng)的 葉節(jié)點(diǎn)在視圖信息樹(shù)中的上一級(jí)節(jié)點(diǎn),以根據(jù)所述獲取的數(shù)據(jù)對(duì)視圖信息樹(shù)進(jìn)行更新,構(gòu) 建新的分支,進(jìn)而在新構(gòu)建的分支上設(shè)置新建視圖的葉節(jié)點(diǎn),并將新建視圖的狀態(tài)信息記 錄于新的葉節(jié)點(diǎn)中。
[0102] 此時(shí),在通過(guò)應(yīng)用界面中的視圖切換操作將新建視圖切換至為當(dāng)前視圖時(shí),將新 建的視圖對(duì)象返回給調(diào)用者,該調(diào)用者可以是視圖控制器,進(jìn)而通過(guò)視圖控制器布設(shè)該視 圖對(duì)象進(jìn)行顯示的位置和層次,以在接收到用戶(hù)在應(yīng)用界面中的視圖切換操作時(shí)進(jìn)行相應(yīng) 視圖的顯示。
[0103] 在另一個(gè)實(shí)施例中,上述視圖信息樹(shù)是隨著應(yīng)用界面中視圖的切換動(dòng)態(tài)構(gòu)建的。
[0104] 本實(shí)施例中,視圖信息樹(shù)是在應(yīng)用界面首次開(kāi)啟視圖進(jìn)構(gòu)建的,并隨著視圖的新 建動(dòng)態(tài)構(gòu)建新的分支,隨著視圖的關(guān)閉而關(guān)閉指向相應(yīng)的葉節(jié)點(diǎn)的路徑上的指不器。
[0105] 視圖信息樹(shù)中每條新的分支的構(gòu)建時(shí)機(jī)將各不相同,只有需要顯示該分支上的視 圖時(shí)構(gòu)建該分支,因此,上述視圖信息樹(shù)是根據(jù)實(shí)際需要進(jìn)行動(dòng)態(tài)擴(kuò)展的。
[0106] 上述視圖切換方法和裝置,在偵聽(tīng)得到應(yīng)用界面中的視圖切換操作時(shí),銷(xiāo)毀視圖 切換操作所對(duì)應(yīng)的當(dāng)前視圖,通過(guò)調(diào)用視圖管理類(lèi)創(chuàng)建所述視圖切換操作中目標(biāo)視圖對(duì)應(yīng) 的視圖對(duì)象,進(jìn)而通過(guò)視圖控制器在應(yīng)用界面中為視圖對(duì)象賦值,以顯示創(chuàng)建的視圖對(duì)象 所對(duì)應(yīng)的目標(biāo)視圖,使得應(yīng)用界面觸發(fā)了視圖切換操作時(shí)動(dòng)態(tài)創(chuàng)建目標(biāo)視圖所對(duì)應(yīng)的視圖 對(duì)象,而不需要目標(biāo)視圖所對(duì)應(yīng)的視圖對(duì)象停留于電子設(shè)備的內(nèi)存中,降低了內(nèi)存資源消 耗,進(jìn)而避免大量視圖對(duì)象停留內(nèi)存所造成的視圖之間切換混亂的缺陷,有效提高應(yīng)用界 面響應(yīng)操作的流暢性。
[0107] 本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以 通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì) 中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì)可為磁 碟、光盤(pán)、只讀存儲(chǔ)記憶體(Read-Only Memory, ROM)或隨機(jī)存儲(chǔ)記憶體(Random Access Memory,RAM)等。
[0108] 以上所述實(shí)施例僅表達(dá)了本發(fā)明的幾種實(shí)施方式,其描述較為具體和詳細(xì),但并 不能因此而理解為對(duì)本發(fā)明專(zhuān)利范圍的限制。應(yīng)當(dāng)指出的是,對(duì)于本領(lǐng)域的普通技術(shù)人員 來(lái)說(shuō),在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干變形和改進(jìn),這些都屬于本發(fā)明的保 護(hù)范圍。因此,本發(fā)明專(zhuān)利的保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。
【權(quán)利要求】
1. 一種視圖切換方法,包括如下步驟: 偵聽(tīng)得到應(yīng)用界面中的視圖切換操作; 銷(xiāo)毀所述視圖切換操作所對(duì)應(yīng)的當(dāng)前視圖; 通過(guò)調(diào)用視圖管理類(lèi)創(chuàng)建所述視圖切換操作中目標(biāo)視圖所對(duì)應(yīng)的視圖對(duì)象; 通過(guò)視圖控制器對(duì)所述視圖對(duì)象進(jìn)行賦值,將所述賦值后的視圖對(duì)象呈現(xiàn)于應(yīng)用界 面,以顯示目標(biāo)視圖。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述銷(xiāo)毀所述視圖切換操作所對(duì)應(yīng)的當(dāng) 前視圖的步驟包括: 通過(guò)所述視圖管理類(lèi)銷(xiāo)毀所述當(dāng)前視圖對(duì)應(yīng)的視圖對(duì)象,并保存所述銷(xiāo)毀的視圖對(duì)象 對(duì)應(yīng)的狀態(tài)信息,使所述當(dāng)前視圖從所述應(yīng)用界面中移除; 將所述銷(xiāo)毀的視圖對(duì)象對(duì)應(yīng)的狀態(tài)信息更新至視圖信息樹(shù)中。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述通過(guò)調(diào)用視圖管理類(lèi)創(chuàng)建所述視圖 切換操作中目標(biāo)視圖所對(duì)應(yīng)的視圖對(duì)象的步驟包括: 通過(guò)所述視圖管理類(lèi)從所述視圖切換操作得到目標(biāo)視圖標(biāo)識(shí),并根據(jù)所述目標(biāo)視圖標(biāo) 識(shí)獲取所述目標(biāo)視圖在視圖信息樹(shù)中的路徑; 根據(jù)所述路徑從所述視圖信息樹(shù)中提取所述目標(biāo)視圖對(duì)應(yīng)的狀態(tài)信息; 調(diào)用所述視圖管理類(lèi)中的創(chuàng)建視圖函數(shù)應(yīng)用所述目標(biāo)視圖對(duì)應(yīng)的狀態(tài)信息創(chuàng)建所述 目標(biāo)視圖對(duì)應(yīng)的視圖對(duì)象。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述偵聽(tīng)得到應(yīng)用界面中的視圖切換操 作的步驟之前,還包括: 通過(guò)觸發(fā)的新建視圖操作獲取新建視圖所請(qǐng)求的數(shù)據(jù); 根據(jù)所述獲取的數(shù)據(jù)更新所述視圖信息樹(shù),并在所述視圖信息樹(shù)記錄所述新建視圖的 狀態(tài)信息。
5. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述視圖信息樹(shù)是隨著所述應(yīng)用界面中 視圖的切換動(dòng)態(tài)構(gòu)建。
6. -種視圖切換裝置,其特征在于,包括: 偵聽(tīng)模塊,用于偵聽(tīng)得到應(yīng)用界面中的視圖切換操作; 當(dāng)前視圖處理模塊,用于銷(xiāo)毀所述視圖切換操作所對(duì)應(yīng)的當(dāng)前視圖; 對(duì)象創(chuàng)建模塊,用于通過(guò)調(diào)用視圖管理類(lèi)創(chuàng)建所述視圖切換操作中目標(biāo)視圖所對(duì)應(yīng)的 視圖對(duì)象; 顯示控制模塊,用于通過(guò)視圖控制器對(duì)所述視圖對(duì)象進(jìn)行賦值,將所述賦值后的視圖 對(duì)象呈現(xiàn)于應(yīng)用界面,以顯示目標(biāo)視圖。
7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述當(dāng)前視圖處理模塊包括: 對(duì)象銷(xiāo)毀單元,用于通過(guò)所述視圖管理類(lèi)銷(xiāo)毀所述當(dāng)前視圖對(duì)應(yīng)的視圖對(duì)象,并保存 所述銷(xiāo)毀的視圖對(duì)象對(duì)應(yīng)的狀態(tài)信息,使所述當(dāng)前視圖從所述應(yīng)用界面中移除; 狀態(tài)更新單元,用于將所述銷(xiāo)毀的視圖對(duì)象對(duì)應(yīng)的狀態(tài)信息更新至視圖信息樹(shù)中。
8. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述對(duì)象創(chuàng)建模塊包括: 路徑獲取單元,用于通過(guò)所述視圖管理類(lèi)從所述視圖切換操作得到目標(biāo)視圖標(biāo)識(shí),并 根據(jù)所述目標(biāo)視圖標(biāo)識(shí)獲取所述目標(biāo)視圖在視圖信息樹(shù)中的路徑; 提取單元,用于根據(jù)所述路徑從所述視圖信息樹(shù)中提取所述目標(biāo)視圖對(duì)應(yīng)的狀態(tài)信 息; 對(duì)象創(chuàng)建單元,用于調(diào)用所述視圖管理類(lèi)中的創(chuàng)建視圖函數(shù)應(yīng)用所述目標(biāo)視圖對(duì)應(yīng)的 狀態(tài)信息創(chuàng)建所述目標(biāo)視圖對(duì)應(yīng)的視圖對(duì)象。
9. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,還包括: 數(shù)據(jù)獲取模塊,用于通過(guò)觸發(fā)的新建視圖操作獲取新建視圖所請(qǐng)求的數(shù)據(jù); 數(shù)據(jù)更新模塊,用于根據(jù)所述獲取的數(shù)據(jù)更新所述視圖信息樹(shù),并在所述視圖信息樹(shù) 記錄所述新建視圖的狀態(tài)信息。
10. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述視圖信息樹(shù)是隨著所述應(yīng)用界面中 視圖的切換動(dòng)態(tài)構(gòu)建。
【文檔編號(hào)】G06F9/48GK104216773SQ201310222341
【公開(kāi)日】2014年12月17日 申請(qǐng)日期:2013年6月5日 優(yōu)先權(quán)日:2013年6月5日
【發(fā)明者】王玉龍, 崔宏健 申請(qǐng)人:騰訊科技(深圳)有限公司