本發(fā)明涉及數(shù)據(jù)下載領(lǐng)域,特別是涉及一種數(shù)據(jù)下載顯示方法及裝置。
背景技術(shù):
大部分的軟件都涉及到數(shù)據(jù)下載,由于數(shù)據(jù)下載存在網(wǎng)絡(luò)交互,一般下載一包數(shù)據(jù)到下一包數(shù)據(jù)之間會存在一定的時(shí)間差,所以軟件的進(jìn)度顯示一般都存在卡頓、突兀、不流暢等問題。在網(wǎng)絡(luò)下載的過程中,下載到的數(shù)據(jù)會先緩沖到一塊緩沖區(qū),達(dá)到一定的數(shù)據(jù)量再進(jìn)行一次IO操作,并在軟件的界面進(jìn)行進(jìn)度的刷新。由于網(wǎng)絡(luò)情況復(fù)雜,不穩(wěn)定性因素非常多,數(shù)據(jù)刷新操作存在著不同時(shí)間差,界面UI百分比顯示也就存在著各類不流暢問題。
目前大部分的軟件在網(wǎng)絡(luò)下載進(jìn)度顯示上只作簡單的刷新顯示,部分軟件有對進(jìn)度作比作優(yōu)化,但還是存在著不足之處。
目前,軟件在處理下載進(jìn)度顯示方案時(shí),一般有兩種處理方式,一種是不經(jīng)任何處理的顯示下載進(jìn)步的百分比。第二種進(jìn)行了簡單的處理,具體處理流程如下:收到一包數(shù)據(jù),即顯示該包數(shù)據(jù)的進(jìn)度,在下一包數(shù)據(jù)到來之后計(jì)算出下一包數(shù)據(jù)的進(jìn)度,并將該進(jìn)度在一定的時(shí)間內(nèi)分段顯示。舉例如下:
第一包數(shù)據(jù)顯示70.00%;
第二包數(shù)據(jù)算出進(jìn)度為75.00%;
然而,按照上述現(xiàn)有方式,有可能分十次在一定時(shí)間內(nèi)顯示,比如2秒內(nèi),會顯示70.05%,70.10%,70.15%......75.00%,每0.2秒顯示一次。
上述第一種顯示方式最原始,其缺點(diǎn)也最多,第二種顯示方式較第一種來說有優(yōu)化,但其缺點(diǎn)也是顯而易見,由于網(wǎng)絡(luò)速率存在很多不穩(wěn)定因素,會導(dǎo)致數(shù)據(jù)包間的時(shí)間差及數(shù)據(jù)包大小都不穩(wěn)定。若按固定的時(shí)間,固定的等分比來處理,會造成百分比顯示跳躍、卡頓等問題,影響用戶體驗(yàn)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種數(shù)據(jù)下載顯示方法及裝置,用以解決目前軟件界面顯示數(shù)據(jù)下載進(jìn)步不流暢的問題。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)下載進(jìn)度顯示方法,包括:根據(jù)已下載的數(shù)據(jù)包的大小以及下載數(shù)據(jù)包所用的時(shí)間計(jì)算在預(yù)期時(shí)間段內(nèi)的數(shù)據(jù)包的第一預(yù)期下載增量;根據(jù)數(shù)據(jù)包的第一預(yù)期下載增量顯示下載進(jìn)度。
其中,根據(jù)已下載的數(shù)據(jù)包的大小以及下載數(shù)據(jù)包所用的時(shí)間計(jì)算在預(yù)期時(shí)間段內(nèi)的數(shù)據(jù)包的第一預(yù)期下載增量,包括:根據(jù)目前網(wǎng)絡(luò)的下載速率從已下載的數(shù)據(jù)包中剔除異常數(shù)據(jù)包后,選擇指定個(gè)數(shù)的數(shù)據(jù)包;根據(jù)指定個(gè)數(shù)的數(shù)據(jù)包及相應(yīng)的下載時(shí)間,計(jì)算出數(shù)據(jù)包的第一平均下載速率;根據(jù)第一平均下載速率計(jì)算預(yù)期時(shí)間段內(nèi)的數(shù)據(jù)包的第一預(yù)期下載增量。
其中,根據(jù)目前網(wǎng)絡(luò)的下載速率從已下載的數(shù)據(jù)包中剔除異常數(shù)據(jù)包,包括:剔除已下載的數(shù)據(jù)包中,下載速率超過其他所有數(shù)據(jù)包平均下載速率三倍的數(shù)據(jù)包;再剔除剩余所有數(shù)據(jù)包中下載速率最大的以及下載速率最小的預(yù)設(shè)個(gè)數(shù)個(gè)數(shù)據(jù)包。
進(jìn)一步的,上述方法還包括:根據(jù)已下載的數(shù)據(jù)包的大小以及下載數(shù)據(jù)包所用的時(shí)間計(jì)算在預(yù)期時(shí)間段內(nèi)數(shù)據(jù)包的第一預(yù)期下載增量之后,計(jì)算后續(xù)接收到的數(shù)據(jù)包的第二平均下載速率;根據(jù)第二平均下載速率確定后續(xù)接收到的數(shù)據(jù)包在預(yù)期時(shí)間段內(nèi)的數(shù)據(jù)包的第二預(yù)期下載增量,根據(jù)第二預(yù)期下載增量對第一預(yù)期下載增量進(jìn)行修正,使用修正后的數(shù)據(jù)包下載增量顯示下載進(jìn)度。
進(jìn)一步的,上述方法還包括:在根據(jù)數(shù)據(jù)包的第一預(yù)期下載增量顯示下載進(jìn)度之前,根據(jù)已下載的數(shù)據(jù)包占總數(shù)據(jù)包的百分比以及當(dāng)前數(shù)據(jù)包的平均下載速率,計(jì)算下載剩余數(shù)據(jù)包所需時(shí)間;在根據(jù)數(shù)據(jù)包的第一預(yù)期下載增量顯示下載進(jìn)度時(shí),顯示下載剩余數(shù)據(jù)包所需時(shí)間,以及已下載數(shù)據(jù)包占總數(shù)據(jù)包的百分比。
根據(jù)本發(fā)明的第二個(gè)方面,提供了一種數(shù)據(jù)下載進(jìn)度顯示裝置,包括:確定模塊,用于根據(jù)已下載的數(shù)據(jù)包的大小以及下載數(shù)據(jù)包所用的時(shí)間計(jì)算在預(yù)期時(shí)間段內(nèi)的數(shù)據(jù)包的第一預(yù)期下載增量;顯示模塊,用于根據(jù)數(shù)據(jù)包的第一預(yù)期下載增量顯示下載進(jìn)度。
其中,上述確定模塊,包括:選擇單元,用于根據(jù)目前網(wǎng)絡(luò)的下載速率從已下載的數(shù)據(jù)包中剔除異常數(shù)據(jù)包后,選擇指定個(gè)數(shù)的數(shù)據(jù)包;第一計(jì)算單元,用于根據(jù)指定個(gè)數(shù)的數(shù)據(jù)包及相應(yīng)的下載時(shí)間,計(jì)算出數(shù)據(jù)包的第一平均下載速率;第二計(jì)算單元,用于根據(jù)第一平均下載速率計(jì)算預(yù)期時(shí)間段內(nèi)的數(shù)據(jù)包的第一預(yù)期下載增量。
其中,選擇單元,包括:第一剔除子單元,用于剔除已下載的數(shù)據(jù)包中,下載速率超過其他所有數(shù)據(jù)包平均下載速率三倍的數(shù)據(jù)包;第二剔除子單元,用于再剔除剩余所有數(shù)據(jù)包中下載速率最大的以及下載速率最小的預(yù)設(shè)個(gè)數(shù)個(gè)數(shù)據(jù)包。
進(jìn)一步的,上述裝置還包括:第一計(jì)算模塊,用于根據(jù)已下載的數(shù)據(jù)包的大小以及下載數(shù)據(jù)包所用的時(shí)間計(jì)算在預(yù)期時(shí)間段內(nèi)數(shù)據(jù)包的第一預(yù)期下載增量之后,計(jì)算后續(xù)接收到的數(shù)據(jù)包的第二平均下載速率;修正模塊,用于根據(jù)第二平均下載速率確定后續(xù)接收到的數(shù)據(jù)包在預(yù)期時(shí)間段內(nèi)的數(shù)據(jù)包的第二預(yù)期下載增量,根據(jù)第二預(yù)期下載增量對第一預(yù)期下載增量進(jìn)行修正,使用修正后的數(shù)據(jù)包下載增量顯示下載進(jìn)度。
其中,上述裝置還包括:第二計(jì)算模塊,用于在根據(jù)數(shù)據(jù)包的第一預(yù)期下載增量顯示下載進(jìn)度之前,根據(jù)已下載的數(shù)據(jù)包占總數(shù)據(jù)包的百分比以及當(dāng)前數(shù)據(jù)包的平均下載速率,計(jì)算下載剩余數(shù)據(jù)包所需時(shí)間;顯示模塊,用于在根據(jù)數(shù)據(jù)包的第一預(yù)期下載增量顯示下載進(jìn)度時(shí),顯示下載剩余數(shù)據(jù)包所需時(shí)間,以及已下載數(shù)據(jù)包占總數(shù)據(jù)包的百分比。
本發(fā)明有益效果如下:
本發(fā)明實(shí)施例提供的方案,根據(jù)已下載的數(shù)據(jù)包的大小和下載該數(shù)據(jù)包所用的時(shí)間來預(yù)計(jì)預(yù)期時(shí)間段內(nèi)數(shù)據(jù)包的下載增量,從來根據(jù)預(yù)計(jì)出的該增量來顯示數(shù)據(jù)下載進(jìn)度,使得數(shù)據(jù)下載的進(jìn)度顯示較為流暢,不會出現(xiàn)卡頓的問題,提高了用戶體驗(yàn)。
附圖說明
圖1是本發(fā)明實(shí)施例1提供的數(shù)據(jù)下載進(jìn)度顯示方法的流程圖;
圖2是本發(fā)明實(shí)施例2中涉及的數(shù)據(jù)下載進(jìn)度顯示方法的主要處理流程;
圖3是本發(fā)明實(shí)施例3中提供的數(shù)據(jù)下載進(jìn)度顯示裝置的結(jié)構(gòu)框圖。
具體實(shí)施方式
為了解決現(xiàn)有技術(shù)軟件界面顯示數(shù)據(jù)下載進(jìn)步不流暢的問題,本發(fā)明提供了一種數(shù)據(jù)下載顯示方法及裝置,以下結(jié)合附圖以及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不限定本發(fā)明。
實(shí)施例1
本實(shí)施例提供了一種數(shù)據(jù)下載進(jìn)度顯示方法,該方法用于提示軟件的數(shù)據(jù)包下載進(jìn)度,圖1是該方法的流程圖,如圖1所示,該方法包括如下步驟:
步驟101:根據(jù)已下載的數(shù)據(jù)包的大小以及下載數(shù)據(jù)包所用的時(shí)間計(jì)算預(yù)期時(shí)間段內(nèi)數(shù)據(jù)包的第一預(yù)期下載增量;
其中,此處預(yù)期時(shí)間段可以是每次刷新下載進(jìn)度的最小時(shí)間間隔,下載增量即在該最小時(shí)間間隔內(nèi)預(yù)先算出的數(shù)據(jù)包下載量,優(yōu)選的,在本實(shí)施例中,可以以5秒或10秒獲取到的數(shù)據(jù)包個(gè)數(shù)來確定預(yù)期時(shí)間段內(nèi)數(shù)據(jù)包的第一預(yù)期下載增量。
步驟102:根據(jù)數(shù)據(jù)包的第一預(yù)期下載增量顯示下載進(jìn)度。
在該步驟102中,具體的,可以是在預(yù)期時(shí)間段內(nèi)顯示第一預(yù)期數(shù)據(jù)下載增量。
其中,根據(jù)已下載的數(shù)據(jù)包的大小以及下載數(shù)據(jù)包所用的時(shí)間計(jì)算預(yù)期時(shí)間段內(nèi)的數(shù)據(jù)包的第一預(yù)期下載增量具體可以包括:
根據(jù)目前網(wǎng)絡(luò)的下載速率從已下載的數(shù)據(jù)包中剔除異常數(shù)據(jù)包后,選擇指定個(gè)數(shù)的數(shù)據(jù)包;根據(jù)選擇的指定個(gè)數(shù)的數(shù)據(jù)包以及下載各數(shù)據(jù)包所用的時(shí)間計(jì)算出數(shù)據(jù)包的第一平均下載速率;根據(jù)數(shù)據(jù)包的第一平均下載速率計(jì)算預(yù)期時(shí)間段內(nèi)的數(shù)據(jù)包的第一預(yù)期下載增量。
其中,根據(jù)目前網(wǎng)絡(luò)的下載速率從已下載的數(shù)據(jù)包中剔除異常數(shù)據(jù)包,具體可以包括:
剔除下載速率超過所有數(shù)據(jù)包平均下載速率三倍的數(shù)據(jù)包;
再剔除剩余所有數(shù)據(jù)包中下載速率最大的以及下載速率最小的預(yù)設(shè)個(gè)數(shù)個(gè)數(shù)據(jù)包。
進(jìn)一步的,本實(shí)施例中,后續(xù)還可以對之前得到的預(yù)期數(shù)據(jù)包下載增量進(jìn)行修正,基于此,上述方法還可以包括:
根據(jù)已下載的數(shù)據(jù)包的大小以及下載數(shù)據(jù)包所用的時(shí)間計(jì)算預(yù)期時(shí)間段內(nèi)數(shù)據(jù)包的第一預(yù)期下載增量之后,計(jì)算后續(xù)接收到的數(shù)據(jù)包的第二平均下載速率,根據(jù)第二平均下載速率確定后續(xù)接收到的數(shù)據(jù)包在預(yù)期時(shí)間段內(nèi)的第二預(yù)期數(shù)據(jù)下載增量,根據(jù)數(shù)據(jù)包的第二預(yù)期下載增量對數(shù)據(jù)包的第一預(yù)期下載增量進(jìn)行修正,使用修正后的數(shù)據(jù)包下載增量顯示下載進(jìn)度。
優(yōu)選的,本實(shí)施例的下載進(jìn)度顯示方案還可以對數(shù)據(jù)包當(dāng)前下載進(jìn)程以及下載剩余時(shí)間進(jìn)行提示,基于此,上述方法還可以包括:
在根據(jù)數(shù)據(jù)包的第一預(yù)期下載增量顯示下載進(jìn)度之前,根據(jù)已下載的數(shù)據(jù)包占總數(shù)據(jù)包的百分比以及當(dāng)前數(shù)據(jù)包的平均下載速率,計(jì)算下載剩余數(shù)據(jù)包所需時(shí)間;
在根據(jù)數(shù)據(jù)包的第一預(yù)期下載增量顯示下載進(jìn)度時(shí),顯示下載剩余數(shù)據(jù)所需時(shí)間,以及已下載數(shù)據(jù)包占總數(shù)據(jù)包的百分比。
實(shí)施例2
本實(shí)施例通過公開更多的技術(shù)細(xì)節(jié)來對本發(fā)明提供的數(shù)據(jù)下載進(jìn)度顯示方法進(jìn)行進(jìn)一步說明。
圖2是本實(shí)施例中涉及的數(shù)據(jù)下載進(jìn)度顯示方法的主要處理流程,如圖2所示,該流程主要包括如下處理:
統(tǒng)計(jì)當(dāng)前下載的數(shù)據(jù)包及確定當(dāng)前處于的下載過程,根據(jù)數(shù)據(jù)包的歷史下載速率進(jìn)行綜合分析,判斷當(dāng)前數(shù)據(jù)包下載速率及下一包數(shù)據(jù)到來的相對準(zhǔn)確時(shí)間及數(shù)據(jù)量,確定數(shù)據(jù)下載進(jìn)度百分比參數(shù),在規(guī)定的時(shí)間內(nèi)以動畫的方式模擬出當(dāng)前的下載進(jìn)度。
在如上流程中,對數(shù)據(jù)包的統(tǒng)計(jì)包括:監(jiān)測下載過程及數(shù)據(jù)異常等情況。例如,在下載開始時(shí),記錄當(dāng)前下載的是第一包數(shù)據(jù),如果下載過程中遇到網(wǎng)絡(luò)錯(cuò)誤,會發(fā)送DownLoadAbort通知,以便及時(shí)顯示異常情況。
在如上流程中,對數(shù)據(jù)的下載進(jìn)度進(jìn)行預(yù)測具體可以包括:
通過之前統(tǒng)計(jì)的各類參數(shù),將時(shí)間及進(jìn)度比向下傳給顯示模塊。下載開始后,首先會先收集幾包數(shù)據(jù)進(jìn)行分析,判斷,然后再顯示進(jìn)度,以獲得開始數(shù)據(jù)的相對穩(wěn)定。下載中,分析不同時(shí)間段數(shù)據(jù)包,給出相對準(zhǔn)確的進(jìn)度預(yù)測。
本實(shí)施例數(shù)據(jù)下載進(jìn)度預(yù)測的處理邏輯包括如下處理:
下載開始后,獲取到的數(shù)據(jù)包情況如下:
->(10kb,0.1s)->(1kb,0.1s)->(2kb,0.15s)->(2kb,0.1s)->(1kb,0.1s)->(1kb,0.15s)->(3kb,0.2s)......->(3kb,0.1s)->(2kb,0.1s)。
初始處理根據(jù)網(wǎng)速情況選適當(dāng)數(shù)據(jù)包取均值,例如,取5個(gè)數(shù)據(jù)包,將上述數(shù)據(jù)包中的(10kb,0.1s),(1kb,0.1s),(2kb,0.15s),(2kb,0.1s),(1kb,0.1s)這五包數(shù)據(jù)取出來,篩選不正常數(shù)據(jù)包,將第一個(gè)數(shù)據(jù)包(10kb,0.1s)剔除掉,因?yàn)樵摂?shù)據(jù)包中的數(shù)據(jù)量與下載所用時(shí)間的比值超過了平均值的3倍,去掉該數(shù)據(jù)后會將第6包數(shù)據(jù)補(bǔ)上來。然后再按各數(shù)據(jù)包的數(shù)據(jù)量與下載所用時(shí)間的比值進(jìn)行排序,去除比值最大的10%的數(shù)據(jù)包和比值最小的10%數(shù)據(jù)包。需要說明的是,本實(shí)施例中舉例為選擇5個(gè)數(shù)據(jù)進(jìn)行分析,如果選擇50個(gè)數(shù)據(jù)包,則可以去除10包數(shù)據(jù)。然后根據(jù)剩余的40個(gè)包數(shù)據(jù)計(jì)算平均數(shù)據(jù)包大小以及平均間隔時(shí)間。本實(shí)施中,去除(1kb,0.15s),剩余(1kb,0.1s),(2kb,0.15s),(2kb,0.1s),(1kb,0.1s),得到平均數(shù)據(jù)包大小為0.15kb,平均間隔時(shí)間0.1125s。
然后進(jìn)行加權(quán)處理,上面得到數(shù)據(jù)包0.15kb,間隔0.1125s。假如,文件總大小1M,則當(dāng)前下載進(jìn)度約為0.015%,由于肉眼能觀察到的刷新為0.1秒,在不影響視覺的情況下刷新頻率不應(yīng)該高于這個(gè)值,故,本實(shí)施例中預(yù)設(shè)時(shí)間間隔一般為1秒,在數(shù)據(jù)包下載進(jìn)度慢的情況下會將最小顯示度值所需時(shí)間作為間隔時(shí)間,例如,一個(gè)數(shù)據(jù)包的數(shù)據(jù)進(jìn)度不是0.015%而是0.0015%,百分比最小顯示為0.01%,這種情況下會設(shè)置間隔時(shí)間為66秒了。
在得到進(jìn)度增量以及平均間隔時(shí)間后,還可以進(jìn)行進(jìn)度增量的修正,對后續(xù)數(shù)據(jù)包繼續(xù)統(tǒng)計(jì),求均值。重新計(jì)算進(jìn)度增量與間隔時(shí)間,對之前計(jì)算得到的數(shù)據(jù)增量以及間隔時(shí)間進(jìn)行修正。在異常情況下重新復(fù)位重新開始統(tǒng)計(jì)流程。
在本實(shí)施例中,數(shù)據(jù)下載進(jìn)度顯示可以采用動畫的方式,顯示會比一般軟件直接刷新UI流暢。由預(yù)測模塊給出的時(shí)間和進(jìn)度,在速率快的情況下,會由較為流暢的顯示效果,速率慢的情況下進(jìn)度刷新會很平順,不會出現(xiàn)卡頓等問題。
實(shí)施例3
本實(shí)施例提供了一種數(shù)據(jù)下載進(jìn)度顯示裝置,該裝置用于實(shí)現(xiàn)上述實(shí)施例1中提供的數(shù)據(jù)下載進(jìn)度顯示方法,圖3是該裝置的結(jié)構(gòu)框圖,如圖3所示,該裝置30包括如下組成部分:
確定模塊31,用于根據(jù)已下載的數(shù)據(jù)包的大小以及下載數(shù)據(jù)包所用的時(shí)間計(jì)算預(yù)期時(shí)間段內(nèi)數(shù)據(jù)包的第一預(yù)期下載增量;
顯示模塊32,用于根據(jù)數(shù)據(jù)包的第一預(yù)期下載增量顯示下載進(jìn)度。
其中,上述確定模塊31具體可以包括:
選擇單元,用于根據(jù)目前網(wǎng)絡(luò)的下載速率從已下載的數(shù)據(jù)包中剔除異常數(shù)據(jù)包后,選擇指定個(gè)數(shù)的數(shù)據(jù)包;
第一計(jì)算單元,用于根據(jù)指定個(gè)數(shù)的數(shù)據(jù)包以及下載各數(shù)據(jù)包所用的時(shí)間計(jì)算出數(shù)據(jù)包的第一平均下載速率;
第二計(jì)算單元,用于根據(jù)數(shù)據(jù)包的第一平均下載速率計(jì)算預(yù)期時(shí)間段內(nèi)的數(shù)據(jù)包的第一預(yù)期下載增量。
其中,上述選擇單元具體可以包括:
第一剔除子單元,用于剔除下載速率超過所有數(shù)據(jù)包平均下載速率三倍的數(shù)據(jù)包;
第二剔除子單元,用于再剔除剩余所有數(shù)據(jù)包中下載速率最大的以及下載速率最小的預(yù)設(shè)個(gè)數(shù)個(gè)數(shù)據(jù)包。
進(jìn)一步的,上述裝置30還可以包括:
第一計(jì)算模塊,根據(jù)已下載的數(shù)據(jù)包的大小以及下載數(shù)據(jù)包所用的時(shí)間計(jì)算預(yù)期時(shí)間段內(nèi)數(shù)據(jù)包的第一預(yù)期下載增量之后,計(jì)算后續(xù)接收到的數(shù)據(jù)包的第二平均下載速率;
修正模塊,用于根據(jù)第二平均下載速率確定后續(xù)接收到的數(shù)據(jù)包在預(yù)期時(shí)間段內(nèi)的第二預(yù)期數(shù)據(jù)下載增量,根據(jù)數(shù)據(jù)包的第二預(yù)期下載增量對數(shù)據(jù)包的第一預(yù)期下載增量進(jìn)行修正,使用修正后的數(shù)據(jù)包下載增量顯示下載進(jìn)度。
進(jìn)一步的,上述裝置還可以包括:
第二計(jì)算模塊,用于在根據(jù)數(shù)據(jù)包的第一預(yù)期下載增量顯示下載進(jìn)度之前,根據(jù)已下載的數(shù)據(jù)包占總數(shù)據(jù)包的百分比以及當(dāng)前數(shù)據(jù)包的平均下載速率,計(jì)算下載剩余數(shù)據(jù)包所需時(shí)間;顯示模塊,用于在根據(jù)數(shù)據(jù)包的第一預(yù)期下載增量顯示下載進(jìn)度時(shí),顯示下載剩余數(shù)據(jù)所需時(shí)間,以及已下載數(shù)據(jù)包占總數(shù)據(jù)包的百分比。
盡管為示例目的,已經(jīng)公開了本發(fā)明的優(yōu)選實(shí)施例,本領(lǐng)域的技術(shù)人員將意識到各種改進(jìn)、增加和取代也是可能的,因此,本發(fā)明的范圍應(yīng)當(dāng)不限于上述實(shí)施例。