亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

基于Android平臺(tái)的通過(guò)列表控件異步加載圖片的優(yōu)化方法

文檔序號(hào):8380761閱讀:337來(lái)源:國(guó)知局
基于Android平臺(tái)的通過(guò)列表控件異步加載圖片的優(yōu)化方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種圖片加載的方法,特別是涉及一種基于Android平臺(tái)的通過(guò)列表控件異步加載圖片的優(yōu)化方法。
【背景技術(shù)】
[0002]Android是一種基于Linux的自由及開(kāi)放源代碼的操作系統(tǒng),主要使用于移動(dòng)設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開(kāi)放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開(kāi)發(fā)。2007年11月,Google與84家硬件制造商、軟件開(kāi)發(fā)商及電信營(yíng)運(yùn)商組建開(kāi)放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開(kāi)源許可證的授權(quán)方式,發(fā)布了 Android的源代碼。第一部Android智能手機(jī)發(fā)布于2008年10月。Android逐漸擴(kuò)展到平板電腦及其他領(lǐng)域上,如電視、數(shù)碼相機(jī)、游戲機(jī)等。2011年第一季度,Android在全球的市場(chǎng)份額首次超過(guò)塞班系統(tǒng),躍居全球第一。2013年的第四季度,Android平臺(tái)手機(jī)的全球市場(chǎng)份額已經(jīng)達(dá)到78.1% ο
[0003]因此,基于Android平臺(tái)的各種應(yīng)用呈現(xiàn)爆發(fā)式增長(zhǎng),而且移動(dòng)互聯(lián)網(wǎng)的發(fā)展讓更多的應(yīng)用已經(jīng)不僅局限于以前的單機(jī)工具類(lèi)應(yīng)用,而更趨向于移動(dòng)互聯(lián)網(wǎng)式交互型應(yīng)用。在現(xiàn)有的各類(lèi)應(yīng)用中,都需要展示服務(wù)端提供的大量圖片文字等信息。因此,列表控件成為一個(gè)必不可少的控件,列表中使用異步加載網(wǎng)絡(luò)圖片也是常用的技術(shù)手段。
[0004]現(xiàn)有技術(shù)中,對(duì)網(wǎng)絡(luò)圖片的加載均是通過(guò)調(diào)用系統(tǒng)異步加載方式來(lái)實(shí)現(xiàn)。基本所有的優(yōu)化方案都是針對(duì)網(wǎng)絡(luò)圖片做緩存。
[0005]如申請(qǐng)?zhí)枮?01110154365.6、發(fā)明名稱(chēng)為《通過(guò)控件加載遠(yuǎn)程圖片的方法及系統(tǒng)》的中國(guó)發(fā)明專(zhuān)利中公開(kāi)一種通過(guò)控件加載遠(yuǎn)程圖片的方法,包括以下步驟:下載遠(yuǎn)程圖片文件;對(duì)所述遠(yuǎn)程圖片文件進(jìn)行解碼,讀取圖片數(shù)據(jù);根據(jù)所述圖片數(shù)據(jù)繪制圖片到控件上。采用該方法,能在Android系統(tǒng)的移動(dòng)終端上,讀取遠(yuǎn)程圖片并展示在用戶界面上。
[0006]再比如申請(qǐng)?zhí)枮?01210583612.9、發(fā)明名稱(chēng)為《基于Android平臺(tái)的圖片加載方法》的中國(guó)發(fā)明專(zhuān)利中公開(kāi)一種圖片信息加載方法,包括:獲取當(dāng)前界面所需展示的圖片的數(shù)據(jù)信息;根據(jù)所述圖片的縮略圖的數(shù)據(jù)量大小,從小到大下載所述圖片的縮略圖;當(dāng)各個(gè)所述圖片的縮略圖下載完成后,根據(jù)所述圖片的完整圖的數(shù)據(jù)量大小,從小到大下載所述圖片的完整圖。
[0007]然而,目前基于Android平臺(tái)的終端設(shè)備中在通過(guò)列表控件異步加載網(wǎng)絡(luò)圖片時(shí)均針對(duì)緩存來(lái)進(jìn)行優(yōu)化,在加載數(shù)量和加載邏輯上卻依然使用了系統(tǒng)的默認(rèn)異步加載方式,并未從加載數(shù)量和加載邏輯上去進(jìn)行優(yōu)化。
[0008]對(duì)于加載邏輯而言,Android系統(tǒng)本身異步加載過(guò)程沒(méi)有問(wèn)題,問(wèn)題在于通過(guò)列表控件異步加載網(wǎng)絡(luò)圖片這種特定情況下就存在一定的不合理。這是因?yàn)?,?dāng)異步操作大于系統(tǒng)設(shè)定的工作線程最大值后,新的異步操作會(huì)加入等待隊(duì)列中,而隊(duì)列又是先進(jìn)先出的方式。這樣的情況會(huì)導(dǎo)致于用戶快速滑動(dòng)列表之后,列表迅速發(fā)起大量的異步請(qǐng)求,此時(shí)列表早已經(jīng)到了下面幾十行,可是線程池中還是依次慢慢一條條執(zhí)行所有的異步請(qǐng)求。等執(zhí)行到幾十行之后時(shí)間和資源都損耗較為嚴(yán)重,造成用戶體驗(yàn)太差。
[0009]對(duì)于加載數(shù)量而言,目前Android系統(tǒng)默認(rèn)的異步請(qǐng)求的線程池最大工作線程個(gè)數(shù)24個(gè),由于網(wǎng)絡(luò)帶寬有限,而且手機(jī)對(duì)于列表的展示個(gè)數(shù)通常為6-10個(gè)。為了快速展示圖片到控件上,只需同時(shí)并發(fā)10個(gè)左右即可。因此,控制并發(fā)量也能增加每個(gè)線程的處理能力,同時(shí)減少使用了系統(tǒng)資源。

【發(fā)明內(nèi)容】

[0010]鑒于以上所述現(xiàn)有技術(shù)的缺點(diǎn),本發(fā)明的目的在于提供一種基于Android平臺(tái)的通過(guò)列表控件異步加載圖片的優(yōu)化方法,在Android平臺(tái)的應(yīng)用中,通過(guò)ListView或GridView或者繼承于此兩類(lèi)View的列表控件在異步加載圖片時(shí)對(duì)加載邏輯和加載數(shù)量進(jìn)行優(yōu)化,從而解決異步加載圖片時(shí)造成的卡頓或者內(nèi)存溢出等問(wèn)題。
[0011]為實(shí)現(xiàn)上述目的及其他相關(guān)目的,本發(fā)明提供一種基于Android平臺(tái)的通過(guò)列表控件異步加載圖片的優(yōu)化方法,包括以下步驟:步驟S1、啟動(dòng)應(yīng)用;步驟S2、建立線程池,設(shè)定線程池中最大同時(shí)工作線程數(shù);步驟S3、建立一個(gè)等待線程鏈表,定義等待線程鏈表最大值;步驟S4、用戶操作列表滾動(dòng)時(shí),判斷該列表是否有加載圖片的需求,如果否,轉(zhuǎn)入步驟S13 ;如有是,則每個(gè)有需求的列表?xiàng)l目均發(fā)出自己的異步加載任務(wù),轉(zhuǎn)入步驟S5 ;步驟S5、判斷目前線程池中正在工作線程數(shù)是否小于設(shè)定的最大同時(shí)工作線程數(shù),如果是,轉(zhuǎn)入步驟S6 ;如果否,轉(zhuǎn)入步驟S7 ;步驟S6、將異步加載任務(wù)載入到線程池中并立刻運(yùn)行,轉(zhuǎn)入步驟S7 ;步驟S7、判斷目前等待線程鏈表個(gè)數(shù)是否小于等待線程鏈表最大值,如果是,轉(zhuǎn)入步驟S8 ;如果否,轉(zhuǎn)入步驟S9 ;步驟S8、將此異步加載任務(wù)存入等待線程鏈表末尾,轉(zhuǎn)入步驟SlO ;步驟S9、將此等待線程鏈表中第一個(gè)異步節(jié)點(diǎn)拋棄,并把最新的異步加載任務(wù)插入到該等待線程鏈表隊(duì)尾,轉(zhuǎn)入步驟SlO ;步驟S10、當(dāng)線程池中的某一個(gè)工作線程執(zhí)行完成后,檢查等待線程鏈表,判斷等待線程鏈表是否為空,如果是,則轉(zhuǎn)入步驟S12 ;如果否,則轉(zhuǎn)入步驟Sll ;步驟S11、取出等待線程鏈表中隊(duì)尾的節(jié)點(diǎn),并加入線程池立刻執(zhí)行,轉(zhuǎn)入步驟SlO ;步驟S12、完成所有異步加載任務(wù);步驟S13、等待用戶繼續(xù)操作列表。
[0012]根據(jù)上述的基于Android平臺(tái)的通過(guò)列表控件異步加載圖片的優(yōu)化方法,其中:所述步驟S2中,根據(jù)Android終端設(shè)備CPU個(gè)數(shù)設(shè)定線程池中最大同時(shí)工作線程數(shù)。
[0013]進(jìn)一步地,根據(jù)上述的基于Android平臺(tái)的通過(guò)列表控件異步加載圖片的優(yōu)化方法,其中:線程池中最大同時(shí)工作線程數(shù)與Android終端設(shè)備CPU個(gè)數(shù)相同。
[0014]根據(jù)上述的基于Android平臺(tái)的通過(guò)列表控件異步加載圖片的優(yōu)化方法,其中:所述步驟S3中,根據(jù)列表控件顯示數(shù)量定義等待線程鏈表最大值。
[0015]進(jìn)一步地,根據(jù)上述的基于Android平臺(tái)的通過(guò)列表控件異步加載圖片的優(yōu)化方法,其中:等待線程鏈表最大值大于列表控件顯示數(shù)量。
[0016]如上所述,本發(fā)明的基于Android平臺(tái)的通過(guò)列表控件異步加載圖片的優(yōu)化方法,具有以下有益效果:
[0017](I)通過(guò)后進(jìn)先出原則和限制等待隊(duì)列最大值來(lái)對(duì)棧頂?shù)牟僮鬟M(jìn)行拋棄處理,以提前最新加入隊(duì)列的操作的開(kāi)始執(zhí)行時(shí)間;
[0018](2)通過(guò)分析自身產(chǎn)品的規(guī)則,結(jié)合硬件資源,找出本應(yīng)用最合適的并發(fā)數(shù),以提升每個(gè)線程占用的帶寬,加速資源獲取的速度;
[0019](3)提升了用戶體驗(yàn),節(jié)省了系統(tǒng)資源。
【附圖說(shuō)明】
[0020]圖1顯示為本發(fā)明的基于Android平臺(tái)的通過(guò)列表控件異步加載圖片的優(yōu)化方法的流程圖。
【具體實(shí)施方式】
[0021]以下通過(guò)特定的具體實(shí)例說(shuō)明本發(fā)明的實(shí)施方式,本領(lǐng)域技術(shù)人員可由本說(shuō)明書(shū)所揭露的內(nèi)容輕易地了解本發(fā)明的其他優(yōu)點(diǎn)與功效。本發(fā)明還可以通過(guò)另外不同的【具體實(shí)施方式】加以實(shí)施或應(yīng)用,本說(shuō)明書(shū)中的各項(xiàng)細(xì)節(jié)也可以基于不同觀點(diǎn)與應(yīng)用,在沒(méi)有背離本發(fā)明的精神下進(jìn)行各種修飾或改變。
[0022]需要說(shuō)明的是,本實(shí)施例中所提供的圖示僅以示意方式說(shuō)明本發(fā)明的基本構(gòu)想,遂圖式中僅顯示與本發(fā)明中有關(guān)的組件而非按照實(shí)際實(shí)施時(shí)的組件數(shù)目、形狀
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1