專利名稱:一種下載數(shù)據(jù)的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種下載數(shù)據(jù)的方法及裝置。
背景技術(shù):
目前,數(shù)據(jù)下載主要通過文件塊下載的方式完成。文件塊下載是軟件流系統(tǒng)中通 訊子模塊下載一個(gè)文件內(nèi)部分?jǐn)?shù)據(jù)的一種下載方式。對(duì)于給定尺寸的文件,按照固定的大 小對(duì)文件進(jìn)行分割,劃分為若干文件塊。對(duì)分割好的文件塊進(jìn)行下載的過程稱為文件塊下載。在應(yīng)用程序運(yùn)行過程中,只要使用的文件塊沒有存儲(chǔ)在本地磁盤,就會(huì)引發(fā)前臺(tái) 下載,所謂前臺(tái)下載是指,由軟件流系統(tǒng)的塊請(qǐng)求而引發(fā)的文件塊下載,前臺(tái)下載是應(yīng)用程 序運(yùn)行過程中最基本的下載方式之一。然而,現(xiàn)有的數(shù)據(jù)下載方式至少存在如下問題1、在應(yīng)用程序運(yùn)行過程中,頻繁的缺塊請(qǐng)求,會(huì)導(dǎo)致軟件流系統(tǒng)頻繁的進(jìn)行前臺(tái) 下載操作,而有限的網(wǎng)絡(luò)通訊速度會(huì)導(dǎo)致所運(yùn)行的應(yīng)用程序經(jīng)常停頓、從而使得運(yùn)行不流 暢。2、在應(yīng)用程序運(yùn)行過程中,由于只有要使用的文件塊沒有存儲(chǔ)在本地磁盤,才會(huì) 引發(fā)前臺(tái)下載,因而,如果軟件流服務(wù)只使用前臺(tái)下載方式,那么很可能導(dǎo)致客戶端系統(tǒng)的 網(wǎng)絡(luò)帶寬占用不均衡。在某些空閑時(shí)刻,空閑的網(wǎng)絡(luò)帶寬不能得到有效使用。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明實(shí)施例的目的在于提供一種下載數(shù)據(jù)的方法及裝置,以解決現(xiàn) 有技術(shù)中應(yīng)用程序運(yùn)行不暢,以及網(wǎng)絡(luò)帶寬占用不均衡的問題。本發(fā)明實(shí)施例提供了一種下載數(shù)據(jù)的方法,包括如果軟件流系統(tǒng)當(dāng)前存在前臺(tái)下載,則執(zhí)行前臺(tái)下載操作;如果軟件流系統(tǒng)當(dāng)前不存在前臺(tái)下載,則在加載數(shù)據(jù)流預(yù)取接口成功后,應(yīng)用所 述數(shù)據(jù)流預(yù)取接口通過后臺(tái)進(jìn)行數(shù)據(jù)下載。其中,應(yīng)用所述數(shù)據(jù)流預(yù)取接口通過后臺(tái)進(jìn)行數(shù)據(jù)下載的步驟包括從所述數(shù)據(jù)流預(yù)取接口中獲取應(yīng)用程序的第一運(yùn)行點(diǎn)信息;獲得與所述第一運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件信息及文件塊信息;判斷所述第一運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件塊中是否存在空塊,若是,則將所述文件信 息和文件塊信息加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下載任務(wù)列表中的文件塊所對(duì)應(yīng)的 數(shù)據(jù)進(jìn)行下載。其中,若所述文件塊中不存在空塊,則所述方法還包括從所述數(shù)據(jù)流預(yù)取接口中獲取運(yùn)行點(diǎn)的相關(guān)度信息,及運(yùn)行點(diǎn)的新鮮度信息;獲取與所述第一運(yùn)行點(diǎn)相關(guān)度最高且新鮮度最高的第二運(yùn)行點(diǎn)信息;獲得與所述第二運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件信息及文件塊信息;
判斷所述第二運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件塊中是否存在空塊,若是,則將所述文件信 息和文件塊信息加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下載任務(wù)列表中的文件塊所對(duì)應(yīng)的 數(shù)據(jù)進(jìn)行下載。其中,所述第二運(yùn)行點(diǎn)信息包括至少一個(gè)運(yùn)行點(diǎn)信息。其中,所述運(yùn)行點(diǎn)信息以抽象句柄KEY的形式表示;所述每個(gè)運(yùn)行點(diǎn)信息所對(duì)應(yīng) 的文件及文件塊信息分別保存在一個(gè)數(shù)據(jù)高速緩存DATACACHE中。其中,在前臺(tái)執(zhí)行下載操作時(shí),還包括記錄前臺(tái)下載的文件信息以及該文件的文 件塊信息。其中,如果軟件流系統(tǒng)當(dāng)前不存在前臺(tái)下載,且加載數(shù)據(jù)流預(yù)取接口未成功,則所 述方法還包括i)獲取預(yù)設(shè)時(shí)間段內(nèi)通過前臺(tái)下載的文件塊信息;ii)查詢所下載的文件塊中是否存在與已經(jīng)被填充的文件塊相鄰的未被填充的文 件塊,若存在,則執(zhí)行步驟iii),若不存在則執(zhí)行步驟iv);iii)判斷所述未被填充的文件塊是否存在空塊,若存在空塊,則執(zhí)行步驟V),若 不存在空塊,則執(zhí)行步驟iv);iv)查詢是否存在包含空塊的文件,若存在,則按照包含空塊數(shù)量的多少,將包含 空塊文件的文件信息和文件塊信息依次加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下載任務(wù)列 表中的文件塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載,結(jié)束;若不存在,則結(jié)束;ν)將所述文件信息和文件塊信息加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下載任務(wù) 列表中的文件塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載。本發(fā)明實(shí)施例還提供了一種下載數(shù)據(jù)的裝置,包括前臺(tái)下載單元,用于在軟件流系統(tǒng)當(dāng)前存在前臺(tái)下載時(shí),執(zhí)行前臺(tái)下載操作;第一后臺(tái)下載單元,用于在軟件流系統(tǒng)當(dāng)前不存在前臺(tái)下載,且在加載數(shù)據(jù)流預(yù) 取接口成功時(shí),應(yīng)用所述數(shù)據(jù)流預(yù)取接口通過后臺(tái)進(jìn)行數(shù)據(jù)下載。其中,所述第一后臺(tái)下載單元包括運(yùn)行點(diǎn)獲取單元,用于從所述數(shù)據(jù)流預(yù)取接口中獲取應(yīng)用程序的第一運(yùn)行點(diǎn)信 息;第一文件塊獲取單元,用于獲得與所述第一運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件信息及文件塊 fn息;第一后臺(tái)下載子單元,用于判斷所述第一運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件塊中存在空塊 時(shí),將所述文件信息和文件塊信息加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下載任務(wù)列表中 的文件塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載。其中,如果判斷出所述文件塊中不存在空塊,則所述裝置還包括附加信息獲取單元,用于從所述數(shù)據(jù)流預(yù)取接口中獲取運(yùn)行點(diǎn)的相關(guān)度信息,及 運(yùn)行點(diǎn)的新鮮度信息;所述運(yùn)行點(diǎn)獲取單元,還用于獲取與所述第一運(yùn)行點(diǎn)相關(guān)度最高且新鮮度最高的 第二運(yùn)行點(diǎn)信息;所述第一文件塊獲取單元,還用于獲得與所述第二運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件信息及 文件塊信息;
第一后臺(tái)下載子單元,還用于判斷所述第二運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件塊中存在空塊 時(shí),將所述文件信息和文件塊信息加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下載任務(wù)列表中 的文件塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載。其中,所述裝置還包括記錄單元,用于在前臺(tái)執(zhí)行下載操作時(shí),記錄前臺(tái)下載的文件信息以及該文件的 文件塊信息。其中,如果軟件流系統(tǒng)當(dāng)前不存在前臺(tái)下載,且加載數(shù)據(jù)流預(yù)取接口未成功,則所 述裝置還包括第二文件塊獲取單元,用于獲取預(yù)設(shè)時(shí)間段內(nèi)通過前臺(tái)下載的文件塊信息;第一查詢單元,用于查詢所下載的文件塊中是否存在與已經(jīng)被填充的文件塊相鄰 的未被填充的文件塊,若存在,則通知判斷模塊,若不存在則通知第二查詢單元;判斷模塊,用于判斷所述未被填充的文件塊是否存在空塊,若存在空塊,則通知第 二后臺(tái)第二下載子單元,若不存在空塊,則通知第二查詢模塊;第二查詢單元,用于查詢是否存在包含空塊的文件,若存在,則通知第二后臺(tái)下載 單元;若不存在,則結(jié)束;第二后臺(tái)第一下載子單元,用于按照包含空塊數(shù)量的多少,將包含空塊文件的文 件信息和文件塊信息依次加入到下載任務(wù)列表,過后臺(tái)對(duì)所述下載任務(wù)列表中的文件塊所 對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載,結(jié)束;第二后臺(tái)第二下載子單元,用于將所述文件信息和文件塊信息加入到下載任務(wù)列 表,通過后臺(tái)對(duì)所述下載任務(wù)列表中的文件塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載??梢姡瑧?yīng)用本發(fā)明實(shí)施例提供的下載數(shù)據(jù)的方法和裝置,當(dāng)存在前臺(tái)下載時(shí),阻止 了后臺(tái)下載,當(dāng)前臺(tái)未進(jìn)行下載操作時(shí),通過數(shù)據(jù)流預(yù)取接口的方式進(jìn)行后臺(tái)下載,從而解 決了現(xiàn)有技術(shù)中應(yīng)用程序運(yùn)行不暢,以及網(wǎng)絡(luò)帶寬占用不均衡的問題。再有,由于應(yīng)用數(shù)據(jù) 流預(yù)取接口通過后臺(tái)進(jìn)行數(shù)據(jù)下載的流程實(shí)際相當(dāng)于一個(gè)通用的數(shù)據(jù)流預(yù)取框架,因而提 供了統(tǒng)一的接入規(guī)范,方便了第三方按需接入。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附 圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域 普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是根據(jù)本發(fā)明實(shí)施例的一種下載數(shù)據(jù)的方法流程圖;圖2是根據(jù)本發(fā)明實(shí)施例的應(yīng)用數(shù)據(jù)流預(yù)取接口通過后臺(tái)進(jìn)行數(shù)據(jù)下載的流程 圖;圖3是根據(jù)本發(fā)明實(shí)施例的通過前臺(tái)下載的記錄信息進(jìn)行數(shù)據(jù)下載的流程圖;圖4是根據(jù)本發(fā)明實(shí)施例的加載數(shù)據(jù)流預(yù)取接口的流程圖;圖5是根據(jù)本發(fā)明實(shí)施例的下載數(shù)據(jù)的裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于 本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他 實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。為了方便下面敘述,下面先介紹幾個(gè)概念后臺(tái)下載與前臺(tái)下載相對(duì)應(yīng),后臺(tái)下載并不是由軟件流服務(wù)塊請(qǐng)求而引發(fā)。它按 照指定策略下載數(shù)據(jù),以填充文件塊。數(shù)據(jù)流預(yù)取預(yù)測(cè)應(yīng)用程序在運(yùn)行過程中可能引發(fā)的塊請(qǐng)求,并利用后臺(tái)下載提 前將這些塊下載到客戶端本地。這樣當(dāng)應(yīng)用程序有塊請(qǐng)求時(shí),可以在本地磁盤讀取,改善軟 件流式運(yùn)行的用戶體驗(yàn)。參見圖1,其是根據(jù)本發(fā)明實(shí)施例的一種下載數(shù)據(jù)的方法流程圖。具體包括步驟101,判斷軟件流系統(tǒng)當(dāng)前是否存在前臺(tái)下載,如果存在,則執(zhí)行步驟102,如 果不存在,且在加載數(shù)據(jù)流預(yù)取接口成功后,執(zhí)行步驟103 ;步驟102,執(zhí)行前臺(tái)下載操作;此時(shí),阻止后臺(tái)下載操作,以防止后臺(tái)下載操作搶 占系統(tǒng)帶寬資源;步驟103,應(yīng)用所述數(shù)據(jù)流預(yù)取接口通過后臺(tái)進(jìn)行數(shù)據(jù)下載。應(yīng)用本發(fā)明實(shí)施例提供了下載數(shù)據(jù)的方法,當(dāng)存在前臺(tái)下載時(shí),阻止后臺(tái)下載,當(dāng) 前臺(tái)未進(jìn)行下載操作時(shí),通過數(shù)據(jù)流預(yù)取接口的方式進(jìn)行后臺(tái)下載,從而解決了現(xiàn)有技術(shù) 中應(yīng)用程序運(yùn)行不暢,以及網(wǎng)絡(luò)帶寬占用不均衡的問題。參見圖2,其是根據(jù)本發(fā)明實(shí)施例的應(yīng)用數(shù)據(jù)流預(yù)取接口通過后臺(tái)進(jìn)行數(shù)據(jù)下載 的流程圖。本流程具體包括步驟201,從所述數(shù)據(jù)流預(yù)取接口中獲取應(yīng)用程序的第一運(yùn)行點(diǎn)信息;具體的,上述第一運(yùn)行點(diǎn)信息可以以抽象句柄(KEY)的形式表示,也就是說(shuō),抽象 句柄KEY用于記錄應(yīng)用程序當(dāng)前的運(yùn)行點(diǎn)。當(dāng)然,也可以應(yīng)用其他形成進(jìn)行表示,本文以 KEY為例進(jìn)行說(shuō)明。需要說(shuō)明的是,上述KEY對(duì)于軟件流系統(tǒng)而言是不透明的,即軟件流系統(tǒng)并不了 解KEY的具體內(nèi)容。這是因?yàn)?,不同的?yīng)用程序所對(duì)應(yīng)的KEY是不同的,例如,對(duì)于網(wǎng)游類 應(yīng)用程序而言,KEY可能包含當(dāng)前用戶所在的地圖位置、等級(jí)等信息;對(duì)于一般的桌面應(yīng)用 程序而言,KEY可能包含當(dāng)前程序正在運(yùn)行的功能模塊以及功能點(diǎn)等;對(duì)于像WPS這樣的軟 件,可以把用于正在進(jìn)行何種操作定義為KEY,本發(fā)明實(shí)施例中,并不限制實(shí)現(xiàn)者定義KEY 的具體內(nèi)容,因此,對(duì)于軟件流系統(tǒng),不需要理解KEY的具體內(nèi)容。步驟202,獲得與所述第一運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件信息及文件塊信息;具體的,每個(gè)運(yùn)行點(diǎn)信息所對(duì)應(yīng)的文件及文件塊信息分別保存在一個(gè)數(shù)據(jù)高速緩 存(DATACACHE)中;上述文件信息可以包括文件ID,位置等信息;上述文件塊信息可以包括文件塊 ID、文件塊索引、大小等等。步驟203,判斷所述第一運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件塊中是否存在空塊,若是,則執(zhí)行 步驟204 ;步驟204,將所述文件信息和文件塊信息加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下 載任務(wù)列表中的文件塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載。
需要說(shuō)明的是,本文中,空塊是指在客戶端本地還沒有被填充的文件塊。如果上述步驟203中判斷出文件塊中不存在空塊,則圖2所示流程還包括步驟205,從所述數(shù)據(jù)流預(yù)取接口中獲取運(yùn)行點(diǎn)的相關(guān)度信息,及運(yùn)行點(diǎn)的新鮮度 fn息;需要說(shuō)明的是,在數(shù)據(jù)流預(yù)取接口中包含了表示兩個(gè)KEY之間相關(guān)程度的KEY相 關(guān)度信息,以及KEY的新鮮度信息;所謂KEY的新鮮度是指,在KEY所對(duì)應(yīng)的DATACACHE中 所包含的文件塊中,若空塊越多,則該DATACACHE所對(duì)應(yīng)的KEY的新鮮度就越高。步驟206,獲取與所述第一運(yùn)行點(diǎn)相關(guān)度最高且新鮮度最高的第二運(yùn)行點(diǎn)信息;需要說(shuō)明的是,上述第二運(yùn)行點(diǎn)信息可以是一個(gè),也可以是多個(gè),即第二運(yùn)行點(diǎn)信 息包括至少一個(gè)運(yùn)行點(diǎn)信息;步驟207,獲得與所述第二運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件信息及文件塊信息;具體的,獲取與第二運(yùn)行點(diǎn)信息對(duì)應(yīng)的DATACACHE ;由于第二運(yùn)行點(diǎn)信息可以是 多個(gè),而每個(gè)KEY對(duì)應(yīng)一個(gè)DATACACHE,因而這里與第二運(yùn)行點(diǎn)信息對(duì)應(yīng)的DATACACHE也可 能是多個(gè);步驟208,判斷所述第二運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件塊中是否存在空塊,若是,則將所 述文件信息和文件塊信息加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下載任務(wù)列表中的文件塊 所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載;若不存在空塊,則結(jié)束。根據(jù)圖2的描述可知,該應(yīng)用數(shù)據(jù)流預(yù)取接口通過后臺(tái)進(jìn)行數(shù)據(jù)下載的流程實(shí)際 相當(dāng)于一個(gè)通用的數(shù)據(jù)流預(yù)取框架,軟件流系統(tǒng)并不關(guān)心數(shù)據(jù)流預(yù)取接口的具體實(shí)現(xiàn)細(xì) 節(jié),如KEY是什么,與KEY對(duì)應(yīng)的DATACACHE是什么等,這里,將具體實(shí)現(xiàn)的細(xì)節(jié)留給第三 方,而應(yīng)用軟件流系統(tǒng)提供的通用的數(shù)據(jù)流預(yù)取框架,方便了第三方按需接入。此外,在前臺(tái)執(zhí)行下載操作時(shí),即在步驟101之后,還可以包括記錄前臺(tái)下載的 文件信息以及該文件的文件塊信息,該記錄的信息可以保存于內(nèi)存中。這樣,如果軟件流系 統(tǒng)當(dāng)前不存在前臺(tái)下載,且加載數(shù)據(jù)流預(yù)取接口未成功,則可以按圖3所示流程執(zhí)行數(shù)據(jù) 下載操作。參見圖3,其是根據(jù)本發(fā)明實(shí)施例的通過前臺(tái)下載的記錄信息進(jìn)行數(shù)據(jù)下載的流 程圖。本流程具體包括步驟301,獲取預(yù)設(shè)時(shí)間段內(nèi)通過前臺(tái)下載的文件塊信息;上述文件塊信息可以包括文件塊ID、文件塊索引、大小等等;步驟302,查詢所下載的文件塊中是否存在與已經(jīng)被填充的文件塊相鄰的未被填 充的文件塊,若存在,則執(zhí)行步驟303,若不存在則執(zhí)行步驟304 ;需要說(shuō)明的是,在軟件流系統(tǒng)加載一個(gè)應(yīng)用程序(包)的最開始階段,所有的文件 都是空的(亦即每一個(gè)相關(guān)文件的文件塊都未被填充)。在應(yīng)用程序的運(yùn)行過程中,會(huì)不斷 的請(qǐng)求文件數(shù)據(jù),這個(gè)時(shí)候,如果被請(qǐng)求的文件數(shù)據(jù)所對(duì)應(yīng)的文件塊在本地磁盤不存在,那 么就通過前臺(tái)下載將這些文件塊下載回來(lái)并寫回到本地磁盤。通常情況下,被請(qǐng)求的文件 塊是離散的,也就是說(shuō),應(yīng)用程序通常不會(huì)按順序的訪問文件的每一個(gè)部分。這樣,在應(yīng)用 程序運(yùn)行過程中,會(huì)出現(xiàn)這樣的情況某些文件的某些文件塊被訪問了,那么,這些被訪問 的文件塊就處于填充狀態(tài),而某些文件塊還未被訪問到,這些未被訪問的文件塊就處于未 被填充狀態(tài)。
步驟303,判斷所述未被填充的文件塊是否存在空塊,若存在空塊,則執(zhí)行步驟 305,若不存在空塊,則執(zhí)行步驟304 ;步驟304,查詢是否存在包含空塊的文件,若存在,則執(zhí)行步驟306,若不存在,則 結(jié)束;也就是說(shuō),如果不存在空塊,則說(shuō)明該應(yīng)用程序中包含文件塊都已經(jīng)被填充滿了, 因而可以退出后臺(tái)下載,結(jié)束;步驟305,將所述文件信息和文件塊信息加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下 載任務(wù)列表中的文件塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載;步驟306,按照包含空塊數(shù)量的多少,將包含空塊文件的文件信息和文件塊信息依 次加入到下載任務(wù)列表,過后臺(tái)對(duì)所述下載任務(wù)列表中的文件塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載,結(jié)束。至此,通過前臺(tái)下載的記錄信息實(shí)現(xiàn)了數(shù)據(jù)的后臺(tái)下載。參見圖4,其是根據(jù)本發(fā)明實(shí)施例的加載數(shù)據(jù)流預(yù)取接口的流程圖,本流程具體包 括步驟401,軟件流系統(tǒng)判斷是否能夠獲取數(shù)據(jù)流預(yù)取接口的動(dòng)態(tài)連接庫(kù)(DLL),若 能夠獲取,則執(zhí)行步驟402,否則,確定加載數(shù)據(jù)流預(yù)取接口失敗,結(jié)束;具體的,軟件流系統(tǒng)可以通過查詢配置文件中的數(shù)據(jù)流預(yù)取接口實(shí)現(xiàn)信息,來(lái)判 斷是否能夠獲取數(shù)據(jù)流預(yù)取接口 ;例如,在配置文件中已注明了某包實(shí)現(xiàn)了數(shù)據(jù)流預(yù)取接 口,則通過查詢配置文件獲知該包的數(shù)據(jù)流預(yù)取接口存在,則判斷出能夠獲取數(shù)據(jù)流預(yù)取 接口。步驟402,軟件流系統(tǒng)通過擴(kuò)展模塊加載所述DLL并調(diào)用數(shù)據(jù)流預(yù)取接口,若加載 調(diào)用成功,則加載數(shù)據(jù)流預(yù)取接口成功,若加載調(diào)用失敗,則加載數(shù)據(jù)流預(yù)取接口失敗。至此,完成了加載數(shù)據(jù)流預(yù)取接口的操作。綜合圖1至圖4可知,本發(fā)明實(shí)施例提供的下載數(shù)據(jù)方法,首先限制了后臺(tái)下載與 前臺(tái)下載同步進(jìn)行,即在軟件流服務(wù)進(jìn)行前臺(tái)下載的過程中,阻止后臺(tái)下載動(dòng)作,防止后臺(tái) 下載搶占系統(tǒng)帶寬。當(dāng)軟件流系統(tǒng)空閑時(shí)(無(wú)前臺(tái)下載時(shí)),才啟動(dòng)后臺(tái)下載。對(duì)于后臺(tái)下 載又有兩種途徑,一種是在數(shù)據(jù)流預(yù)取接口加載成功的情況下,通過數(shù)據(jù)流預(yù)取接口實(shí)現(xiàn) 后臺(tái)下載,另一種是在數(shù)據(jù)流預(yù)取接口加載未成功的情況下,通過前臺(tái)下載的記錄信息進(jìn) 行后臺(tái)下載??梢?,應(yīng)用本發(fā)明實(shí)施例提供的下載數(shù)據(jù)的方法,當(dāng)存在前臺(tái)下載時(shí),阻止了后臺(tái) 下載,當(dāng)前臺(tái)未進(jìn)行下載操作時(shí),通過數(shù)據(jù)流預(yù)取接口的方式進(jìn)行后臺(tái)下載,從而解決了現(xiàn) 有技術(shù)中應(yīng)用程序運(yùn)行不暢,以及網(wǎng)絡(luò)帶寬占用不均衡的問題。再有,由于應(yīng)用數(shù)據(jù)流預(yù)取 接口通過后臺(tái)進(jìn)行數(shù)據(jù)下載的流程實(shí)際相當(dāng)于一個(gè)通用的數(shù)據(jù)流預(yù)取框架,因而提供了統(tǒng) 一的接入規(guī)范,方便了第三方按需接入。本發(fā)明實(shí)施例還提供了一種下載數(shù)據(jù)的裝置,參見圖5,具體包括前臺(tái)下載單元501,用于在軟件流系統(tǒng)當(dāng)前存在前臺(tái)下載時(shí),執(zhí)行前臺(tái)下載操作;第一后臺(tái)下載單元502,用于在軟件流系統(tǒng)當(dāng)前不存在前臺(tái)下載,且在加載數(shù)據(jù)流 預(yù)取接口成功時(shí),應(yīng)用所述數(shù)據(jù)流預(yù)取接口通過后臺(tái)進(jìn)行數(shù)據(jù)下載。上述第一后臺(tái)下載單元可以具體包括
運(yùn)行點(diǎn)獲取單元,用于從所述數(shù)據(jù)流預(yù)取接口中獲取應(yīng)用程序的第一運(yùn)行點(diǎn)信 息;第一文件塊獲取單元,用于獲得與所述第一運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件信息及文件塊 fn息;第一后臺(tái)下載子單元,用于判斷所述第一運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件塊中存在空塊 時(shí),將所述文件信息和文件塊信息加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下載任務(wù)列表中 的文件塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載。如果判斷出所述文件塊中不存在空塊,則所述裝置還可以具體包括附加信息獲取單元,用于從所述數(shù)據(jù)流預(yù)取接口中獲取運(yùn)行點(diǎn)的相關(guān)度信息,及 運(yùn)行點(diǎn)的新鮮度信息;所述運(yùn)行點(diǎn)獲取單元,還用于獲取與所述第一運(yùn)行點(diǎn)相關(guān)度最高且新鮮度最高的 第二運(yùn)行點(diǎn)信息;所述第一文件塊獲取單元,還用于獲得與所述第二運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件信息及 文件塊信息;第一后臺(tái)下載子單元,還用于判斷所述第二運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件塊中存在空塊 時(shí),將所述文件信息和文件塊信息加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下載任務(wù)列表中 的文件塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載。其中,所述裝置還可以具體包括記錄單元503,用于在前臺(tái)執(zhí)行下載操作時(shí),記錄前臺(tái)下載的文件信息以及該文件 的文件塊信息。如果軟件流系統(tǒng)當(dāng)前不存在前臺(tái)下載,且加載數(shù)據(jù)流預(yù)取接口未成功,則所述裝 置還可以具體包括第二后臺(tái)下載單元504,該第二后臺(tái)下載單元504可以具體包括第二文件塊獲取單元,用于獲取預(yù)設(shè)時(shí)間段內(nèi)通過前臺(tái)下載的文件塊信息;第一查詢單元,用于查詢所下載的文件塊中是否存在與已經(jīng)被填充的文件塊相鄰 的未被填充的文件塊,若存在,則通知判斷模塊,若不存在則通知第二查詢單元;判斷模塊,用于判斷所述未被填充的文件塊是否存在空塊,若存在空塊,則通知第 二后臺(tái)第二下載子單元,若不存在空塊,則通知第二查詢模塊;第二查詢單元,用于查詢是否存在包含空塊的文件,若存在,則通知第二后臺(tái)下載 單元;若不存在,則結(jié)束;第二后臺(tái)第一下載子單元,用于按照包含空塊數(shù)量的多少,將包含空塊文件的文 件信息和文件塊信息依次加入到下載任務(wù)列表,過后臺(tái)對(duì)所述下載任務(wù)列表中的文件塊所 對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載,結(jié)束;第二后臺(tái)第二下載子單元,用于將所述文件信息和文件塊信息加入到下載任務(wù)列 表,通過后臺(tái)對(duì)所述下載任務(wù)列表中的文件塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載??梢姡瑧?yīng)用本發(fā)明實(shí)施例提供的下載數(shù)據(jù)的裝置,當(dāng)存在前臺(tái)下載時(shí),阻止了后臺(tái) 下載,當(dāng)前臺(tái)未進(jìn)行下載操作時(shí),通過數(shù)據(jù)流預(yù)取接口的方式進(jìn)行后臺(tái)下載,從而解決了現(xiàn) 有技術(shù)中應(yīng)用程序運(yùn)行不暢,以及網(wǎng)絡(luò)帶寬占用不均衡的問題。再有,由于應(yīng)用數(shù)據(jù)流預(yù)取 接口通過后臺(tái)進(jìn)行數(shù)據(jù)下載的流程實(shí)際相當(dāng)于一個(gè)通用的數(shù)據(jù)流預(yù)取框架,因而提供了統(tǒng) 一的接入規(guī)范,方便了第三方按需接入。
10
對(duì)于裝置實(shí)施例而言,由于其基本相似于方法實(shí)施例,所以描述的比較簡(jiǎn)單,相關(guān) 之處參見方法實(shí)施例的部分說(shuō)明即可。需要說(shuō)明的是,在本文中,諸如第一和第二等之類的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí) 體或者操作與另一個(gè)實(shí)體或操作區(qū)分開來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存 在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵 蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要 素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備 所固有的要素。在沒有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除 在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同要素。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述方法實(shí)施方式中的全部或部分步驟是可 以通過程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可以存儲(chǔ)于計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中, 這里所稱得的存儲(chǔ)介質(zhì),如R0M/RAM、磁碟、光盤等。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在 本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍 內(nèi)。
權(quán)利要求
1.一種下載數(shù)據(jù)的方法,其特征在于,包括如果軟件流系統(tǒng)當(dāng)前存在前臺(tái)下載,則執(zhí)行前臺(tái)下載操作;如果軟件流系統(tǒng)當(dāng)前不存在前臺(tái)下載,則在加載數(shù)據(jù)流預(yù)取接口成功后,應(yīng)用所述數(shù) 據(jù)流預(yù)取接口通過后臺(tái)進(jìn)行數(shù)據(jù)下載。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,應(yīng)用所述數(shù)據(jù)流預(yù)取接口通過后臺(tái)進(jìn)行 數(shù)據(jù)下載的步驟包括從所述數(shù)據(jù)流預(yù)取接口中獲取應(yīng)用程序的第一運(yùn)行點(diǎn)信息;獲得與所述第一運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件信息及文件塊信息;判斷所述第一運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件塊中是否存在空塊,若是,則將所述文件信息和 文件塊信息加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下載任務(wù)列表中的文件塊所對(duì)應(yīng)的數(shù)據(jù) 進(jìn)行下載。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,若所述文件塊中不存在空塊,則所述方法 還包括從所述數(shù)據(jù)流預(yù)取接口中獲取運(yùn)行點(diǎn)的相關(guān)度信息,及運(yùn)行點(diǎn)的新鮮度信息;獲取與所述第一運(yùn)行點(diǎn)相關(guān)度最高且新鮮度最高的第二運(yùn)行點(diǎn)信息;獲得與所述第二運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件信息及文件塊信息;判斷所述第二運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件塊中是否存在空塊,若是,則將所述文件信息和 文件塊信息加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下載任務(wù)列表中的文件塊所對(duì)應(yīng)的數(shù)據(jù) 進(jìn)行下載。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述第二運(yùn)行點(diǎn)信息包括至少一個(gè)運(yùn)行點(diǎn)fn息。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述運(yùn)行點(diǎn)信息以抽象句柄KEY的形 式表示;所述每個(gè)運(yùn)行點(diǎn)信息所對(duì)應(yīng)的文件及文件塊信息分別保存在一個(gè)數(shù)據(jù)高速緩存 DATACACHE 中。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,在前臺(tái)執(zhí)行下載操作時(shí),還包括記錄前 臺(tái)下載的文件信息以及該文件的文件塊信息。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于,如果軟件流系統(tǒng)當(dāng)前不存在前臺(tái)下載,且 加載數(shù)據(jù)流預(yù)取接口未成功,則所述方法還包括i)獲取預(yù)設(shè)時(shí)間段內(nèi)通過前臺(tái)下載的文件塊信息; )查詢所下載的文件塊中是否存在與已經(jīng)被填充的文件塊相鄰的未被填充的文件 塊,若存在,則執(zhí)行步驟iii),若不存在則執(zhí)行步驟iv);iii)判斷所述未被填充的文件塊是否存在空塊,若存在空塊,則執(zhí)行步驟ν),若不存 在空塊,則執(zhí)行步驟iv);iv)查詢是否存在包含空塊的文件,若存在,則按照包含空塊數(shù)量的多少,將包含空塊 文件的文件信息和文件塊信息依次加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下載任務(wù)列表中 的文件塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載,結(jié)束;若不存在,則結(jié)束;V)將所述文件信息和文件塊信息加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下載任務(wù)列表 中的文件塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載。
8.一種下載數(shù)據(jù)的裝置,其特征在于,包括前臺(tái)下載單元,用于在軟件流系統(tǒng)當(dāng)前存在前臺(tái)下載時(shí),執(zhí)行前臺(tái)下載操作; 第一后臺(tái)下載單元,用于在軟件流系統(tǒng)當(dāng)前不存在前臺(tái)下載,且在加載數(shù)據(jù)流預(yù)取接 口成功時(shí),應(yīng)用所述數(shù)據(jù)流預(yù)取接口通過后臺(tái)進(jìn)行數(shù)據(jù)下載。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述第一后臺(tái)下載單元包括運(yùn)行點(diǎn)獲取單元,用于從所述數(shù)據(jù)流預(yù)取接口中獲取應(yīng)用程序的第一運(yùn)行點(diǎn)信息; 第一文件塊獲取單元,用于獲得與所述第一運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件信息及文件塊信息;第一后臺(tái)下載子單元,用于判斷所述第一運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件塊中存在空塊時(shí),將 所述文件信息和文件塊信息加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下載任務(wù)列表中的文件 塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,如果判斷出所述文件塊中不存在空塊, 則所述裝置還包括附加信息獲取單元,用于從所述數(shù)據(jù)流預(yù)取接口中獲取運(yùn)行點(diǎn)的相關(guān)度信息,及運(yùn)行 點(diǎn)的新鮮度信息;所述運(yùn)行點(diǎn)獲取單元,還用于獲取與所述第一運(yùn)行點(diǎn)相關(guān)度最高且新鮮度最高的第二 運(yùn)行點(diǎn)信息;所述第一文件塊獲取單元,還用于獲得與所述第二運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件信息及文件 塊信息;第一后臺(tái)下載子單元,還用于判斷所述第二運(yùn)行點(diǎn)信息對(duì)應(yīng)的文件塊中存在空塊時(shí), 將所述文件信息和文件塊信息加入到下載任務(wù)列表,通過后臺(tái)對(duì)所述下載任務(wù)列表中的文 件塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載。
11.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括記錄單元,用于在前臺(tái)執(zhí)行下載操作時(shí),記錄前臺(tái)下載的文件信息以及該文件的文件 塊fe息。
12.根據(jù)權(quán)利要求11所述的裝置,其特征在于,如果軟件流系統(tǒng)當(dāng)前不存在前臺(tái)下載, 且加載數(shù)據(jù)流預(yù)取接口未成功,則所述裝置還包括第二文件塊獲取單元,用于獲取預(yù)設(shè)時(shí)間段內(nèi)通過前臺(tái)下載的文件塊信息; 第一查詢單元,用于查詢所下載的文件塊中是否存在與已經(jīng)被填充的文件塊相鄰的未 被填充的文件塊,若存在,則通知判斷模塊,若不存在則通知第二查詢單元;判斷模塊,用于判斷所述未被填充的文件塊是否存在空塊,若存在空塊,則通知第二后 臺(tái)第二下載子單元,若不存在空塊,則通知第二查詢模塊;第二查詢單元,用于查詢是否存在包含空塊的文件,若存在,則通知第二后臺(tái)下載單 元;若不存在,則結(jié)束;第二后臺(tái)第一下載子單元,用于按照包含空塊數(shù)量的多少,將包含空塊文件的文件信 息和文件塊信息依次加入到下載任務(wù)列表,過后臺(tái)對(duì)所述下載任務(wù)列表中的文件塊所對(duì)應(yīng) 的數(shù)據(jù)進(jìn)行下載,結(jié)束;第二后臺(tái)第二下載子單元,用于將所述文件信息和文件塊信息加入到下載任務(wù)列表, 通過后臺(tái)對(duì)所述下載任務(wù)列表中的文件塊所對(duì)應(yīng)的數(shù)據(jù)進(jìn)行下載。
全文摘要
本發(fā)明公開了一種下載數(shù)據(jù)的方法和裝置,所述方法包括如果軟件流系統(tǒng)當(dāng)前存在前臺(tái)下載,則執(zhí)行前臺(tái)下載操作;如果軟件流系統(tǒng)當(dāng)前不存在前臺(tái)下載,則在加載數(shù)據(jù)流預(yù)取接口成功后,應(yīng)用所述數(shù)據(jù)流預(yù)取接口通過后臺(tái)進(jìn)行數(shù)據(jù)下載。應(yīng)用本發(fā)明,當(dāng)存在前臺(tái)下載時(shí),阻止了后臺(tái)下載,當(dāng)前臺(tái)未進(jìn)行下載操作時(shí),通過數(shù)據(jù)流預(yù)取接口的方式進(jìn)行后臺(tái)下載,從而解決了現(xiàn)有技術(shù)中應(yīng)用程序運(yùn)行不暢,以及網(wǎng)絡(luò)帶寬占用不均衡的問題。再有,由于應(yīng)用數(shù)據(jù)流預(yù)取接口通過后臺(tái)進(jìn)行數(shù)據(jù)下載的流程實(shí)際相當(dāng)于一個(gè)通用的數(shù)據(jù)流預(yù)取框架,因而提供了統(tǒng)一的接入規(guī)范,方便了第三方按需接入。
文檔編號(hào)H04L29/06GK102137122SQ201010100320
公開日2011年7月27日 申請(qǐng)日期2010年1月22日 優(yōu)先權(quán)日2010年1月22日
發(fā)明者朱云峰, 朱熠鍔 申請(qǐng)人:北京金山數(shù)字娛樂科技有限公司