專利名稱:一種數(shù)據(jù)延遲加載方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及基于嵌入式圖形系統(tǒng)的數(shù)據(jù)加載技術(shù),特別是指一種數(shù)據(jù)延遲加載方
法及裝置。
背景技術(shù):
隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,圖形用戶界面(GUI,Gr即hical User Interface)的應(yīng)用越來越廣泛,所謂GUI是指采用圖形方式顯示的計(jì)算機(jī)操作用戶界面。與早期計(jì)算機(jī)使用的命令行界面相比,圖形用戶界面對(duì)于用戶來說在視覺上更易于接受。實(shí)現(xiàn)圖形用戶界面方式的系統(tǒng)可稱為窗口系統(tǒng),它以窗口的方式對(duì)屏幕的區(qū)域進(jìn)行劃分管理,支持用戶鼠標(biāo)、按鍵等外部輸入對(duì)窗口進(jìn)行操作,比如窗口最小化、銷毀、拖放等等;窗口系統(tǒng)提供了一套能與用戶交互的控件,比如按鈕、編輯框、圖片等,并形成了事件驅(qū)動(dòng)機(jī)制,方便采用基于控件以及事件驅(qū)動(dòng)機(jī)制開發(fā)應(yīng)用。 隨著移動(dòng)終端如手機(jī)應(yīng)用的普及,手機(jī)GUI應(yīng)用的開發(fā)也成為關(guān)注的重點(diǎn)。但是,
手機(jī)由于其體積小,CPU和內(nèi)存等資源有限,手機(jī)屬于一種資源受限的設(shè)備,因此,就需要用
于手機(jī)的GUI具有輕型、占用資源少、高性能、高可靠性、便于移植、可配置等特點(diǎn)。 現(xiàn)有手機(jī)中的應(yīng)用有很多已經(jīng)基于手機(jī)GUI控件庫開發(fā),但手機(jī)中控件的設(shè)計(jì)與
個(gè)人計(jì)算機(jī)(PC)中的控件設(shè)計(jì)有區(qū)別,需要考慮到手機(jī)中CPU、內(nèi)存等資源的狀況,比如
對(duì)于用來展示類似名片夾、短消息等大量數(shù)據(jù)的列表控件,如果將名片夾數(shù)據(jù)一次性取出
并顯示,則這種做法往往會(huì)讓用戶等待較長的時(shí)間;再比如對(duì)于用來展示大量照片的相
冊(cè)控件,如果將文件系統(tǒng)中的圖片文件一次性取出,這種方式也會(huì)讓用戶等待相當(dāng)長的時(shí)
間??紤]到手機(jī)屏幕顯示數(shù)據(jù)條目的有限性,采取延遲加載數(shù)據(jù)的方式將更適合于手機(jī)的
應(yīng)用開發(fā)。 目前,手機(jī)應(yīng)用的延遲加載方法一般為對(duì)于不同的數(shù)據(jù)開發(fā)對(duì)應(yīng)的控件,讓所開發(fā)的控件控制對(duì)應(yīng)數(shù)據(jù)的延遲加載過程,比如對(duì)于名片夾數(shù)據(jù),開發(fā)控制名片夾數(shù)據(jù)延遲加載過程的控件;對(duì)于相冊(cè)數(shù)據(jù),開發(fā)控制圖片數(shù)據(jù)延遲加載過程的控件等等。但是,這種做法存在一定的缺陷 第一,將延遲加載嵌入到控件中,控件的發(fā)展將受數(shù)據(jù)延遲加載方法的限制,某種意義上來說就是控件受業(yè)務(wù)的限制; 第二,對(duì)于不同的數(shù)據(jù),比如大量圖片數(shù)據(jù)、或是名片夾數(shù)據(jù),由于控件的不同,這種延遲加載數(shù)據(jù)的方法無法統(tǒng)一,不能形成模塊化。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種數(shù)據(jù)延遲加載方法及裝置,能使控件
不再受業(yè)務(wù)的影響,且使數(shù)據(jù)延遲加載形成模塊化。 為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的 本發(fā)明提供了一種數(shù)據(jù)延遲加載方法,包括
3
分別設(shè)置控件和數(shù)據(jù)模型,并設(shè)置控件調(diào)用的數(shù)據(jù)模型接口 ;
控件需要獲取數(shù)據(jù)顯示時(shí),調(diào)用數(shù)據(jù)模型接口 ; 數(shù)據(jù)模型判斷自身是否存在控件所需數(shù)據(jù),如果存在,則直接返回控件所需數(shù)據(jù)給控件顯示;否則,數(shù)據(jù)模型指示應(yīng)用加載所需數(shù)據(jù)到數(shù)據(jù)模型中,數(shù)據(jù)加載后,數(shù)據(jù)模型將加載的控件所需數(shù)據(jù)返回給控件顯示。 該方法進(jìn)一步包括為數(shù)據(jù)模型設(shè)置數(shù)據(jù)結(jié)構(gòu)、操作接口和控制信息;所述操作接口為一個(gè)以上,每個(gè)操作接口對(duì)應(yīng)一個(gè)操作。 其中,所述數(shù)據(jù)結(jié)構(gòu)為多行多列的二維表。所述控制信息包括是否線程方式標(biāo)志、是否容器方式標(biāo)志。 上述方案中,所述數(shù)據(jù)模型先加載一批所需數(shù)據(jù),之后每次需要新數(shù)據(jù)時(shí)再加載一批新數(shù)據(jù);或者,先加載一批所需數(shù)據(jù)后,后臺(tái)繼續(xù)加載新數(shù)據(jù),作為預(yù)加載數(shù)據(jù)。
上述方案中,所述數(shù)據(jù)模型采用容器方式加載、或采用非容器方式加載;所述控制信息進(jìn)一步包括容器容量、一次加載數(shù)據(jù)數(shù)量。 上述方案中,所述采用容器方式加載時(shí),進(jìn)一步采用最近最少原則加載。所述數(shù)據(jù)模型采用線程方式加載、或采用非線程方式加載。 本發(fā)明還提供了一種數(shù)據(jù)延遲加載裝置,包括設(shè)置單元、控件單元、數(shù)據(jù)模型單元;其中, 所述設(shè)置單元,用于設(shè)置控件單元與數(shù)據(jù)模型單元之間的接口 ; 所述控件單元,用于調(diào)用與數(shù)據(jù)模型單元之間的接口,從數(shù)據(jù)模型單元獲取數(shù)據(jù)
并顯示; 所述數(shù)據(jù)模型單元,用于判斷自身是否存在控件單元所需的數(shù)據(jù),存在時(shí),直接返回控件單元所需的數(shù)據(jù);不存在時(shí),數(shù)據(jù)模型單元指示應(yīng)用加載所需數(shù)據(jù)到數(shù)據(jù)模型中,數(shù)據(jù)加載后,將加載的控件單元所需數(shù)據(jù)返回給控件。 其中,所述設(shè)置單元,還用于為數(shù)據(jù)模型單元設(shè)置數(shù)據(jù)結(jié)構(gòu)、操作接口和控制信息。 本發(fā)明所提供的數(shù)據(jù)延遲加載方法及裝置,具有以下的優(yōu)點(diǎn)和特點(diǎn) 第一,本發(fā)明對(duì)于大批量數(shù)據(jù)展示的處理基于模型視圖控制器(MVC, Model View
Controller)進(jìn)行設(shè)計(jì),將業(yè)務(wù)應(yīng)用的控件與數(shù)據(jù)模型分別設(shè)置,其中,控件負(fù)責(zé)數(shù)據(jù)的顯
示、用戶操作的響應(yīng);數(shù)據(jù)模型負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)管理,用于統(tǒng)一管理數(shù)據(jù),即控件充當(dāng)視
圖和控制的角色,數(shù)據(jù)模型為一種管理數(shù)據(jù)的模型。通過這種分離設(shè)置,可對(duì)各個(gè)業(yè)務(wù)應(yīng)用
采用統(tǒng)一的數(shù)據(jù)存儲(chǔ)模型,而控件采用多種多樣的表現(xiàn)形式,比如對(duì)名片夾、短消息、相冊(cè)
等手機(jī)應(yīng)用采用統(tǒng)一的數(shù)據(jù)存儲(chǔ)形式,而對(duì)應(yīng)的不同控件采用不同的視圖表現(xiàn)形式。 本發(fā)明通過對(duì)數(shù)據(jù)模型的配置可以定制出符合手機(jī)特性的加載方式,這種延遲加
載方式,能解決手機(jī)中大批量數(shù)據(jù)顯示延遲的問題,可將批量數(shù)據(jù)的加載處理模塊化,更具
通用性,且能節(jié)省應(yīng)用開發(fā)的時(shí)間。 第二,本發(fā)明基于數(shù)據(jù)模型提供的數(shù)據(jù)延遲加載機(jī)制,可以先加載一部分需顯示的數(shù)據(jù),再根據(jù)需要加載一部分?jǐn)?shù)據(jù),即可以分塊加載;但對(duì)于控件而言,看到的將是全部數(shù)據(jù),數(shù)據(jù)模型屏蔽了延遲加載的細(xì)節(jié)。 第三,本發(fā)明的數(shù)據(jù)模型可以支持線程方式的數(shù)據(jù)加載、或非線程方式的數(shù)據(jù)加載,B卩將控件和數(shù)據(jù)模型由一個(gè)線程實(shí)現(xiàn)、或控件和數(shù)據(jù)模型由不同線程實(shí)現(xiàn);本發(fā)明的 數(shù)據(jù)模型還可以支持容器方式加載、或非容器方式加載,即使用設(shè)置固定容量的數(shù)據(jù)模 型、或不設(shè)置容量的數(shù)據(jù)模型;總之,在具體實(shí)現(xiàn)上更方便、靈活。 通過控件與數(shù)據(jù)模型的分離設(shè)置,用戶可以根據(jù)手機(jī)的硬件性能高低,單獨(dú)配置 數(shù)據(jù)模型的容量、是否一次性加載全部數(shù)據(jù)等,而不需要控件了解不同的設(shè)置差別,如此, 不會(huì)影響控件的升級(jí)演化。
圖1為本發(fā)明數(shù)據(jù)延遲加載方法的實(shí)現(xiàn)流程示意圖;
圖2為本發(fā)明數(shù)據(jù)模型一種數(shù)據(jù)結(jié)構(gòu)的組成結(jié)構(gòu)示意圖;
圖3為本發(fā)明實(shí)施例中控件與數(shù)據(jù)模型關(guān)系示意圖一 ;
圖4為本發(fā)明實(shí)施例中控件與數(shù)據(jù)模型關(guān)系示意圖二。
具體實(shí)施例方式
本發(fā)明的基本思想是分別設(shè)置控件和數(shù)據(jù)模型,并設(shè)置控件調(diào)用的數(shù)據(jù)模型接 口 ;當(dāng)控件需要獲取數(shù)據(jù)顯示時(shí),調(diào)用數(shù)據(jù)模型接口 ,數(shù)據(jù)模型判斷自身是否存在控件所需 數(shù)據(jù),如果存在,則數(shù)據(jù)模型直接返回控件所需數(shù)據(jù)給控件顯示;否則,數(shù)據(jù)模型指示應(yīng)用 加載所需數(shù)據(jù)到數(shù)據(jù)模型中,數(shù)據(jù)加載后,數(shù)據(jù)模型將加載的控件所需數(shù)據(jù)返回給控件顯 示。 其中,控件負(fù)責(zé)數(shù)據(jù)的顯示、用戶操作的響應(yīng);數(shù)據(jù)模型負(fù)責(zé)數(shù)據(jù)的存儲(chǔ)管理,用 于統(tǒng)一管理數(shù)據(jù),并控制數(shù)據(jù)加載時(shí)機(jī)??丶c數(shù)據(jù)模型之間設(shè)置有調(diào)用接口 ,控件通過調(diào) 用接口獲取所需顯示的數(shù)據(jù),所述調(diào)用接口可以通過專門設(shè)置的函數(shù)實(shí)現(xiàn)。
另外,還需為數(shù)據(jù)模型設(shè)置數(shù)據(jù)結(jié)構(gòu)、操作接口和控制信息,用以控制加載數(shù)據(jù)和 存儲(chǔ)管理數(shù)據(jù);所述數(shù)據(jù)結(jié)構(gòu)可以是二維表結(jié)構(gòu),所述操作接口包括多個(gè)接口 ,分別與每個(gè) 操作一一對(duì)應(yīng),所述控制信息是指采用何種方式加載數(shù)據(jù)、以及相應(yīng)的加載數(shù)據(jù)參數(shù)。
—般,數(shù)據(jù)模型先加載當(dāng)前所需的數(shù)據(jù),暫不需要的數(shù)據(jù)將延遲加載。具體包括兩 種方式一種方式是,加載一批所需數(shù)據(jù)之后,在需要新數(shù)據(jù)時(shí)再加載一批新數(shù)據(jù),起到按 需加載的效果;另一種方式是,加載一批所需數(shù)據(jù)之后,后臺(tái)繼續(xù)加載新數(shù)據(jù),起到預(yù)加載 的效果。 具體的,對(duì)于數(shù)據(jù)加載,從數(shù)據(jù)存儲(chǔ)角度來說,數(shù)據(jù)模型可采用容器方式加載數(shù) 據(jù)、或采用非容器方式加載數(shù)據(jù);從運(yùn)行角度來說,數(shù)據(jù)模型可采用線程方式加載數(shù)據(jù),或 采用非線程方式加載數(shù)據(jù)。 所謂容器方式,是指可以設(shè)置數(shù)據(jù)模型加載數(shù)據(jù)的容量,即設(shè)定數(shù)據(jù)模型最多容
納數(shù)據(jù)的條目;當(dāng)新數(shù)據(jù)加載到數(shù)據(jù)模型后,如果新舊數(shù)據(jù)的條目超出數(shù)據(jù)模型的容量,數(shù)
據(jù)模型中的部分舊數(shù)據(jù)將被釋放掉,替換為新數(shù)據(jù),以保持容器的容量不變。 也就是說,采用容器方式加載數(shù)據(jù)時(shí),需要為數(shù)據(jù)模型設(shè)置容器容量。數(shù)據(jù)模型的
容器容量就是數(shù)據(jù)模型作為容器一次性最多能容納的數(shù)據(jù)條目,數(shù)據(jù)模型一次加載的數(shù)據(jù)
條目 一定要小于或等于所設(shè)置的容器容量。設(shè)置數(shù)據(jù)模型的容器容量時(shí), 一般應(yīng)參考硬件
設(shè)備如手機(jī)一屏能顯示的記錄條目,以確保容器容量大于控件一屏能顯示的條目數(shù),不然會(huì)導(dǎo)致預(yù)覽條目時(shí),需要數(shù)據(jù)模型不斷加載新的數(shù)據(jù),因此,通常所設(shè)置的容器容量為硬件 設(shè)備一屏能顯示記錄量的三倍,比如手機(jī)一屏顯示的數(shù)據(jù)條目為7,則設(shè)置數(shù)據(jù)模型的容 器容量為21。 相應(yīng)的,由于數(shù)據(jù)模型的容量有限,所以一次加載數(shù)據(jù)的條目不能超過所設(shè)置的
容器容量。 一般情況下,需要分批加載數(shù)據(jù),且分批加載數(shù)據(jù)的數(shù)量也要參考控件一屏顯示
的數(shù)據(jù)條目,通常分批加載數(shù)據(jù)的數(shù)量為控件一屏顯示的數(shù)據(jù)條目。比如控件一屏顯示的
數(shù)據(jù)條目為7,數(shù)據(jù)模型的容器容量為21,那么,當(dāng)用戶想預(yù)覽第22條數(shù)據(jù)時(shí),由于第22條
數(shù)據(jù)不在數(shù)據(jù)模型中,此時(shí),數(shù)據(jù)模型會(huì)指示應(yīng)用加載第22條到第28條數(shù)據(jù)。 所謂非容器方式,是指不限制數(shù)據(jù)模型的加載容量,新加載的數(shù)據(jù)將與原來的數(shù)
據(jù)共存,并且可以一次性加載全部數(shù)據(jù)。 所述非容器方式支持分批加載數(shù)據(jù)或是一次性加載全部數(shù)據(jù),當(dāng)數(shù)據(jù)模型分批加 載數(shù)據(jù),有新數(shù)據(jù)加載到數(shù)據(jù)模型時(shí),新數(shù)據(jù)將與原來的舊數(shù)據(jù)鏈接在一起;當(dāng)數(shù)據(jù)模型一 次性加載全部數(shù)據(jù)時(shí),將從永久性存儲(chǔ)數(shù)據(jù)的地方獲取某種業(yè)務(wù)的全部數(shù)據(jù)加載到數(shù)據(jù)模 型中。 所謂非線程方式,是指控件需要顯示的數(shù)據(jù)不在數(shù)據(jù)模型中時(shí),數(shù)據(jù)模型立即加 載一部分?jǐn)?shù)據(jù),并將加載的控件所需數(shù)據(jù)返回給控件,控件將顯示收到的數(shù)據(jù),控件運(yùn)行的 線程與數(shù)據(jù)模型加載操作在同一個(gè)線程中。 所謂線程方式,是指控件需要顯示的數(shù)據(jù)不在數(shù)據(jù)模型中時(shí),數(shù)據(jù)模型將啟動(dòng)一 個(gè)新線程來加載數(shù)據(jù),隨著數(shù)據(jù)的加載,數(shù)據(jù)模型將控件所需數(shù)據(jù)返回給控件,控件中的數(shù) 據(jù)將逐漸顯示出來,控件運(yùn)行的線程與數(shù)據(jù)模型加載操作在不同線程中,且一般數(shù)據(jù)模型 的加載操作線程的優(yōu)先級(jí)低于控件運(yùn)行的線程。 通常,采用線程方式是由于加載數(shù)據(jù)的過程比較耗時(shí),比如從文件系統(tǒng)中加載相 冊(cè)圖片,所以,這種情況下,可設(shè)置數(shù)據(jù)模型采用線程方式加載數(shù)據(jù),這樣,數(shù)據(jù)的加載與控 件對(duì)數(shù)據(jù)的獲取就可以并發(fā)進(jìn)行。控件在獲取數(shù)據(jù)模型中的數(shù)據(jù)獲取不到時(shí),先顯示默認(rèn) 的字符或圖片;同時(shí),數(shù)據(jù)模型的后臺(tái)線程加載數(shù)據(jù),等數(shù)據(jù)加載完成時(shí)通知控件,控件將 再次從數(shù)據(jù)模型中獲取所需數(shù)據(jù)并顯示出來。但這種并發(fā)可能會(huì)存在一種沖突,以相冊(cè)為 例,數(shù)據(jù)模型后臺(tái)在加載相冊(cè)每張圖片時(shí),用戶如果快速預(yù)覽相冊(cè)控件,此時(shí)控件需要一批 新的圖片數(shù)據(jù)而數(shù)據(jù)模型正在加載已經(jīng)陳舊的圖片數(shù)據(jù),這種情況下,可使數(shù)據(jù)模型采用 加載新數(shù)據(jù)時(shí)放棄舊數(shù)據(jù)的策略來解決這種沖突。 —般,常用的數(shù)據(jù)加載組合方式包括容器方式加非線程方式、或非容器方式加線 程方式。 本發(fā)明數(shù)據(jù)延遲加載方法,如圖1所示,包括以下步驟 步驟101 :分別設(shè)置控件和數(shù)據(jù)模型,并設(shè)置控件調(diào)用的數(shù)據(jù)模型接口 ; 這里,采用MVC技術(shù)將控件和數(shù)據(jù)模型分離設(shè)置;對(duì)于數(shù)據(jù)模型,由于要進(jìn)行數(shù)據(jù)
的加載以及存儲(chǔ)管理,所以還需為數(shù)據(jù)模型設(shè)置數(shù)據(jù)結(jié)構(gòu)、操作接口和控制信息。 所述數(shù)據(jù)結(jié)構(gòu)可以為二維表,具體的,可將數(shù)據(jù)模型的數(shù)據(jù)結(jié)構(gòu)設(shè)置為多行多列
的二維表結(jié)構(gòu),并提供操作行、操作行與列形成的結(jié)點(diǎn)的接口 。 如圖2所示,該二維表由兩個(gè)方向的鏈表組成;將每行當(dāng)作一個(gè)結(jié)點(diǎn),使用一個(gè)縱 向行鏈表串接所有的行結(jié)點(diǎn),如虛框21所示;每行包含一個(gè)存儲(chǔ)該行各字段信息的橫向列
6鏈表,該鏈表的結(jié)點(diǎn)數(shù)為列的數(shù)目,如虛框22所示,為一個(gè)橫向列鏈表。二維表中每個(gè)行結(jié)
點(diǎn)或列結(jié)點(diǎn)均支持多種類型的列,比如字符型、整型、布爾型、圖片型,一個(gè)二維表可以包 含若干列。
實(shí)際應(yīng)用中,數(shù)據(jù)模型包含一個(gè)上述二維表和一些控制信息;控制信息至少有 是否線程方式標(biāo)志、是否容器方式標(biāo)志;還可進(jìn)一步包括容器容量、一次加載數(shù)據(jù)數(shù)量。
并且,為了便于對(duì)數(shù)據(jù)模型操作,還需提供相應(yīng)的操作接口,分別對(duì)應(yīng)不同的操 作,所述操作接口至少包括 a.創(chuàng)建數(shù)據(jù)結(jié)構(gòu)的操作接口,該接口可指定創(chuàng)建的列數(shù)、以及各列的類型;
b.銷毀數(shù)據(jù)結(jié)構(gòu)的操作接口,用于釋放申請(qǐng)的內(nèi)存; c.追加一行的操作接口 ,該二維表的每行將會(huì)有一個(gè)迭代器,為該行的結(jié)點(diǎn)地址; 追加一行就是創(chuàng)建一個(gè)新的行結(jié)點(diǎn)并返回其地址,該結(jié)點(diǎn)中包含列鏈表的地址,該列鏈表 包含列數(shù)據(jù)的地址信息; d.設(shè)置一行值的操作接口,可以設(shè)置迭代器所指行的各列值;
e.刪除一行的操作接口 ,刪除該行結(jié)點(diǎn)信息,釋放該行結(jié)點(diǎn)空間;
f.獲取一行值的操作接口 ,獲取迭代器所指行的各列值; g.設(shè)置或獲取結(jié)點(diǎn)值的操作接口,可以設(shè)置或獲取行號(hào)與列號(hào)交叉單元的值;
h.獲取行總數(shù)的操作接口 ;
i.其他高級(jí)接口。 以手機(jī)為例,通過該數(shù)據(jù)模型,可以描述清楚手機(jī)中名片夾、短消息、相冊(cè)等批量 數(shù)據(jù)的信息存儲(chǔ)格式和有關(guān)延遲加載的控制。 相應(yīng)的,名片夾、短消息、相冊(cè)大批量數(shù)據(jù)展示的控件基于該數(shù)據(jù)模型開發(fā),控件 將負(fù)責(zé)數(shù)據(jù)的顯示,提供個(gè)性化的數(shù)據(jù)顯示,因此無需關(guān)心數(shù)據(jù)的管理;控件需要某項(xiàng)數(shù)據(jù) 時(shí),可通過調(diào)用數(shù)據(jù)模型接口獲取。如圖3所示,名片夾界面控件顯示的數(shù)據(jù)來自數(shù)據(jù)模 型,圖3中左側(cè)是用戶看到的、由控件顯示出的名片夾界面,包括若干個(gè)聯(lián)系人的信息,這 些信息均來源于圖3右側(cè)數(shù)據(jù)模型中存儲(chǔ)的數(shù)據(jù)。
步驟102 :當(dāng)控件需要獲取數(shù)據(jù)顯示時(shí),調(diào)用數(shù)據(jù)模型接口 ; 步驟103 105 :數(shù)據(jù)模型判斷自身是否存在控件所需數(shù)據(jù),如果存在,則數(shù)據(jù)模 型直接返回控件所需數(shù)據(jù)給控件顯示;否則,數(shù)據(jù)模型指示應(yīng)用加載所需數(shù)據(jù)到數(shù)據(jù)模型 中,數(shù)據(jù)加載后,數(shù)據(jù)模型將加載的控件所需數(shù)據(jù)返回給控件顯示。 這里,數(shù)據(jù)模型會(huì)對(duì)數(shù)據(jù)的加載時(shí)機(jī)進(jìn)行控制,在需要加載數(shù)據(jù)時(shí),數(shù)據(jù)模型將指 示應(yīng)用從服務(wù)或是從永久性存儲(chǔ)數(shù)據(jù)的地方獲取數(shù)據(jù),并加載到數(shù)據(jù)模型中。具體的,將采 用注冊(cè)回調(diào)的方式實(shí)現(xiàn)所述的指示;應(yīng)用從服務(wù)或是從永久性存儲(chǔ)數(shù)據(jù)的地方獲取數(shù)據(jù)的 格式是提供商預(yù)先規(guī)定的,應(yīng)用需要按照規(guī)定的格式解析出數(shù)據(jù),并存儲(chǔ)到數(shù)據(jù)模型中。如 圖3所示,如果用戶向下移動(dòng)按鍵,第7條數(shù)據(jù)信息將顯示出來,由于第7條數(shù)據(jù)已經(jīng)存在 于數(shù)據(jù)模型中,此時(shí)數(shù)據(jù)模型不會(huì)指示加載數(shù)據(jù),當(dāng)用戶按鍵移到第13條信息且繼續(xù)向下 移動(dòng)按鍵時(shí),此時(shí)第14條數(shù)據(jù)將要顯示,而第14條數(shù)據(jù)不在數(shù)據(jù)模型中,此時(shí),數(shù)據(jù)模型會(huì) 指示應(yīng)用加載第14條到20條這段數(shù)據(jù)。 —般,數(shù)據(jù)模型先加載當(dāng)前所需的數(shù)據(jù),暫不需要的數(shù)據(jù)將延遲加載;可以加載一 批所需數(shù)據(jù)之后,在需要新數(shù)據(jù)時(shí)再加載一批新數(shù)據(jù);也可以加載一批所需數(shù)據(jù)之后,后臺(tái)繼續(xù)加載新數(shù)據(jù)。 數(shù)據(jù)模型可以采用容器方式加載數(shù)據(jù)、或采用非容器方式加載數(shù)據(jù);數(shù)據(jù)模型還 可以采用線程方式加載數(shù)據(jù),或采用非線程方式加載數(shù)據(jù)。當(dāng)采用容器方式加載數(shù)據(jù)時(shí),還 需為數(shù)據(jù)模型設(shè)置容器容量的控制信息。 在使用容器方式加載時(shí),可采用最近最少策略將舊數(shù)據(jù)替換為新數(shù)據(jù)。具體的,當(dāng) 新數(shù)據(jù)加載到數(shù)據(jù)模型時(shí),如果數(shù)據(jù)模型中的數(shù)據(jù)未達(dá)到所設(shè)置的容器容量,則數(shù)據(jù)將直 接加載到數(shù)據(jù)模型中;如果數(shù)據(jù)模型的數(shù)據(jù)達(dá)到了所設(shè)置的容器容量,則數(shù)據(jù)模型將采用 最近最少原則進(jìn)行加載,將較少使用的舊數(shù)據(jù)替換為新加載的數(shù)據(jù)。 舉例來說,在手機(jī)中,由于數(shù)據(jù)的操作是連續(xù)性的,比如名片夾中的聯(lián)系人信息、 收件箱中的短消息等,其按鍵預(yù)覽都是連續(xù)前進(jìn)或后退,這樣,所述最近最少使用就變成替 換最上或最下一批數(shù)據(jù),并能保證數(shù)據(jù)模型中數(shù)據(jù)使用的連續(xù)性。如果用戶將容器容量設(shè) 置為三屏數(shù)據(jù)條目數(shù),分批加載數(shù)據(jù)的數(shù)量設(shè)置成一屏數(shù)據(jù)條目數(shù),則最近最少原則具體 為用即將要顯示的下一屏數(shù)據(jù)替換完全移出顯示區(qū)域的那一屏數(shù)據(jù),但處于顯示區(qū)域的 該屏數(shù)據(jù)將保持不變。如圖4所示,當(dāng)用戶預(yù)覽第14條數(shù)據(jù)時(shí),由于第14條數(shù)據(jù)不在數(shù)據(jù) 模型中,所以,數(shù)據(jù)模型會(huì)指示應(yīng)用加載第14條到第20條數(shù)據(jù),并用所加載的第14條到第 20條數(shù)據(jù)替換數(shù)據(jù)模型中已有的第93條到第100條數(shù)據(jù)。 具體的,加載數(shù)據(jù)由加載函數(shù)完成,進(jìn)一步的加載函數(shù)由應(yīng)用實(shí)現(xiàn),應(yīng)用從永久性 存儲(chǔ)數(shù)據(jù)的地方獲取所需的數(shù)據(jù),之后調(diào)用數(shù)據(jù)模型的行列設(shè)置接口 ,將數(shù)據(jù)逐行逐列填 充到數(shù)據(jù)模型中。其中,所述所需的數(shù)據(jù)是指針對(duì)某種業(yè)務(wù)在某種范圍內(nèi)的數(shù)據(jù),如名片 夾中一定范圍內(nèi)的聯(lián)系人信息、相冊(cè)中一定數(shù)量的圖片、短消息收件箱中一定數(shù)量的短消 息等等。 為實(shí)現(xiàn)上述方法,本發(fā)明還提供了一種數(shù)據(jù)延遲加載裝置,包括設(shè)置單元、控件 單元、數(shù)據(jù)模型單元;其中, 所述設(shè)置單元,用于設(shè)置控件單元與數(shù)據(jù)模型單元之間的接口 ; 所述控件單元,用于調(diào)用與數(shù)據(jù)模型單元之間的接口,從數(shù)據(jù)模型單元獲取數(shù)據(jù) 并顯示; 所述數(shù)據(jù)模型單元,用于判斷自身是否存在控件單元所需的數(shù)據(jù),存在時(shí),直接返 回控件單元所需的數(shù)據(jù);不存在時(shí),數(shù)據(jù)模型單元指示應(yīng)用加載所需數(shù)據(jù)到數(shù)據(jù)模型中,數(shù) 據(jù)加載后,將加載的控件單元所需數(shù)據(jù)返回給控件。 進(jìn)一步的,所述設(shè)置單元,還用于為數(shù)據(jù)模型單元設(shè)置數(shù)據(jù)結(jié)構(gòu)、操作接口和控制 信息; 所述控件單元,還用于響應(yīng)用戶的操作。 以上所述,僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍,凡在 本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù) 范圍之內(nèi)。
8
權(quán)利要求
一種數(shù)據(jù)延遲加載方法,其特征在于,該方法包括分別設(shè)置控件和數(shù)據(jù)模型,并設(shè)置控件調(diào)用的數(shù)據(jù)模型接口;控件需要獲取數(shù)據(jù)顯示時(shí),調(diào)用數(shù)據(jù)模型接口;數(shù)據(jù)模型判斷自身是否存在控件所需數(shù)據(jù),如果存在,則直接返回控件所需數(shù)據(jù)給控件顯示;否則,數(shù)據(jù)模型指示應(yīng)用加載所需數(shù)據(jù)到數(shù)據(jù)模型中,數(shù)據(jù)加載后,數(shù)據(jù)模型將加載的控件所需數(shù)據(jù)返回給控件顯示。
2. 根據(jù)權(quán)利要求l所述的數(shù)據(jù)延遲加載方法,其特征在于,該方法進(jìn)一步包括為數(shù)據(jù) 模型設(shè)置數(shù)據(jù)結(jié)構(gòu)、操作接口和控制信息;所述操作接口為一個(gè)以上,每個(gè)操作接口對(duì)應(yīng)一 個(gè)操作。
3. 根據(jù)權(quán)利要求2述的數(shù)據(jù)延遲加載方法,其特征在于,所述數(shù)據(jù)結(jié)構(gòu)為多行多列的二維表。
4. 根據(jù)權(quán)利要求2所述的數(shù)據(jù)延遲加載方法,其特征在于,所述控制信息包括是否線 程方式標(biāo)志、是否容器方式標(biāo)志。
5. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)延遲加載方法,其特征在于,所述數(shù)據(jù)模型先加載一批 所需數(shù)據(jù),之后每次需要新數(shù)據(jù)時(shí)再加載一批新數(shù)據(jù);或者,先加載一批所需數(shù)據(jù)后,后臺(tái)繼續(xù)加載新數(shù)據(jù),作為預(yù)加載數(shù)據(jù)。
6. 根據(jù)權(quán)利要求2所述的數(shù)據(jù)延遲加載方法,其特征在于,所述數(shù)據(jù)模型采用容器方 式加載、或采用非容器方式加載;所述控制信息進(jìn)一步包括容器容量、一次加載數(shù)據(jù)數(shù)量。
7. 根據(jù)權(quán)利要求6所述的數(shù)據(jù)延遲加載方法,其特征在于,所述采用容器方式加載時(shí), 進(jìn)一步采用最近最少原則加載。
8. 根據(jù)權(quán)利要求1所述的數(shù)據(jù)延遲加載方法,其特征在于,所述數(shù)據(jù)模型采用線程方 式加載、或采用非線程方式加載。
9. 一種數(shù)據(jù)延遲加載裝置,其特征在于,該裝置包括設(shè)置單元、控件單元、數(shù)據(jù)模型 單元;其中,所述設(shè)置單元,用于設(shè)置控件單元與數(shù)據(jù)模型單元之間的接口 ;所述控件單元,用于調(diào)用與數(shù)據(jù)模型單元之間的接口,從數(shù)據(jù)模型單元獲取數(shù)據(jù)并顯示;所述數(shù)據(jù)模型單元,用于判斷自身是否存在控件單元所需的數(shù)據(jù),存在時(shí),直接返回控 件單元所需的數(shù)據(jù);不存在時(shí),數(shù)據(jù)模型單元指示應(yīng)用加載所需數(shù)據(jù)到數(shù)據(jù)模型中,數(shù)據(jù)加 載后,將加載的控件單元所需數(shù)據(jù)返回給控件。
10. 根據(jù)權(quán)利要求9所述的數(shù)據(jù)延遲加載裝置,其特征在于,所述設(shè)置單元,還用于為 數(shù)據(jù)模型單元設(shè)置數(shù)據(jù)結(jié)構(gòu)、操作接口和控制信息。
11. 根據(jù)權(quán)利要求io所述的數(shù)據(jù)延遲加載裝置,其特征在于,所述數(shù)據(jù)結(jié)構(gòu)為多行多列的二維表;所述操作接口為一個(gè)以上,每個(gè)操作接口對(duì)應(yīng)一個(gè)操作;所述控制信息包括 是否線程方式標(biāo)志、是否容器方式標(biāo)志。
12. 根據(jù)權(quán)利要求9所述的數(shù)據(jù)延遲加載裝置,其特征在于,所述加載所需數(shù)據(jù)采用容 器方式加載、或采用非容器方式加載;或者,采用線程方式加載、或采用非線程方式加載。
全文摘要
本發(fā)明公開了一種數(shù)據(jù)延遲加載方法,包括分別設(shè)置控件和數(shù)據(jù)模型,并設(shè)置控件調(diào)用的數(shù)據(jù)模型接口;控件需要獲取數(shù)據(jù)顯示時(shí),調(diào)用數(shù)據(jù)模型接口;數(shù)據(jù)模型判斷自身是否存在控件所需數(shù)據(jù),如果存在,則直接返回控件所需數(shù)據(jù)給控件顯示;否則,數(shù)據(jù)模型指示應(yīng)用加載所需數(shù)據(jù)到數(shù)據(jù)模型中,數(shù)據(jù)加載后,數(shù)據(jù)模型將加載的控件所需數(shù)據(jù)返回給控件顯示。本發(fā)明還同時(shí)公開了一種數(shù)據(jù)延遲加載裝置,采用本發(fā)明能使控件不再受業(yè)務(wù)的影響,且使數(shù)據(jù)延遲加載形成模塊化。
文檔編號(hào)G06F9/445GK101751278SQ20091024286
公開日2010年6月23日 申請(qǐng)日期2009年12月17日 優(yōu)先權(quán)日2009年12月17日
發(fā)明者童龍倉 申請(qǐng)人:中興通訊股份有限公司