欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種圖片加載方法及裝置與流程

文檔序號(hào):11677460閱讀:229來(lái)源:國(guó)知局
本申請(qǐng)涉及圖片處理
技術(shù)領(lǐng)域
:,尤其涉及一種圖片加載方法及裝置。
背景技術(shù)
::對(duì)于安卓設(shè)備來(lái)說(shuō),在進(jìn)行圖片加載時(shí),由于解碼圖片需要占用應(yīng)用進(jìn)程大量的java堆內(nèi)存,且,安卓系統(tǒng)的應(yīng)用進(jìn)程都有一定大小限制,因而當(dāng)應(yīng)用進(jìn)程的java堆內(nèi)存使用率較高時(shí),極易出現(xiàn)堆內(nèi)存不足的現(xiàn)象,從而觸發(fā)oom(outofmemory,內(nèi)存耗盡)。為了解決這一問(wèn)題,目前可采用圖片緩存的方式來(lái)減少圖片解碼,以實(shí)現(xiàn)對(duì)解碼所得圖片數(shù)據(jù)的復(fù)用,進(jìn)而降低java堆內(nèi)存的使用率。例如,在從網(wǎng)絡(luò)或本地資源解碼出bitmap(位圖)對(duì)象后,可通過(guò)使用linkedhashmap(基于鏈表、哈希實(shí)現(xiàn)的map數(shù)據(jù)結(jié)構(gòu))實(shí)現(xiàn)lru(leastrecentlyused,近期最少使用算法)緩存管理,即,將最近使用到的bitmap對(duì)象用強(qiáng)引用保存起來(lái)(保存到linkedhashmap中),當(dāng)緩存數(shù)量達(dá)到預(yù)定值的時(shí)候,將不經(jīng)常使用的bitmap對(duì)象刪除,從而實(shí)現(xiàn)對(duì)bitmap對(duì)象的復(fù)用,提高用戶的應(yīng)用體驗(yàn)。但是,由于在采用現(xiàn)有的圖片緩存方式來(lái)實(shí)現(xiàn)解碼所得圖片數(shù)據(jù)的復(fù)用時(shí),仍是在java層解碼出bitmap對(duì)象,并將解碼所得的bitmap對(duì)象緩存在java堆內(nèi)存,即,緩存的圖片數(shù)據(jù)所占用的內(nèi)存仍為java堆內(nèi)存,從而導(dǎo)致java堆內(nèi)存的壓力仍較大,在進(jìn)行圖片的解碼時(shí),仍極易出現(xiàn)堆內(nèi)存不足的現(xiàn)象,從而觸發(fā)oom。技術(shù)實(shí)現(xiàn)要素:本申請(qǐng)實(shí)施例提供了一種圖片加載方法及裝置,用以解決采用現(xiàn)有的圖片緩存方式來(lái)實(shí)現(xiàn)解碼所得圖片數(shù)據(jù)的復(fù)用時(shí),由于java堆內(nèi)存的壓力仍較大從而極易觸發(fā)oom的問(wèn)題。一方面,本申請(qǐng)實(shí)施例提供了一種圖片加載方法,包括:在對(duì)圖片進(jìn)行加載時(shí),判斷native堆內(nèi)存中是否緩存有該圖片的解碼數(shù)據(jù);若是,則從native堆內(nèi)存中獲取該圖片的解碼數(shù)據(jù),并基于獲取到的解碼數(shù)據(jù)實(shí)現(xiàn)該圖片的加載;若否,則從存儲(chǔ)有該圖片的存儲(chǔ)空間處獲取并加載該圖片,并將加載該圖片的過(guò)程中所得到的該圖片的解碼數(shù)據(jù)緩存到native堆內(nèi)存中。另一方面,本申請(qǐng)實(shí)施例提供了一種圖片加載裝置,包括:判斷單元,用于在對(duì)圖片進(jìn)行加載時(shí),判斷native堆內(nèi)存中是否緩存有該圖片的解碼數(shù)據(jù);執(zhí)行單元,用于若確定native堆內(nèi)存中緩存有該圖片的解碼數(shù)據(jù),則從native堆內(nèi)存中獲取該圖片的解碼數(shù)據(jù),并基于獲取到的解碼數(shù)據(jù)實(shí)現(xiàn)該圖片的加載;否則,從存儲(chǔ)有該圖片的存儲(chǔ)空間處獲取并加載該圖片,并將加載該圖片的過(guò)程中所得到的該圖片的解碼數(shù)據(jù)緩存到native堆內(nèi)存中。本申請(qǐng)有益效果如下:本申請(qǐng)實(shí)施例提供了一種圖片加載方法及裝置,可將解碼所得的圖片數(shù)據(jù)緩存在本機(jī)堆內(nèi)存,即native堆內(nèi)存中,以便圖片加載時(shí)復(fù)用,這樣,由于native堆內(nèi)存不計(jì)算在應(yīng)用進(jìn)程的java堆內(nèi)存內(nèi),因而可有效降低java堆內(nèi)存的壓力,降低oom的觸發(fā)概率,同時(shí),還可達(dá)到更好地利用堆內(nèi)存實(shí)現(xiàn)圖片緩存,以提高圖片加載效率并減少系統(tǒng)垃圾回收,即系統(tǒng)gc的效果。附圖說(shuō)明為了更清楚地說(shuō)明本申請(qǐng)實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)要介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本申請(qǐng)的一些實(shí)施例,對(duì)于本領(lǐng)域的普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1所示為本申請(qǐng)實(shí)施例一提供的圖片加載方法的一種可能的流程示意圖;圖2所示為本申請(qǐng)實(shí)施例一提供的圖片加載方法的另一種可能的流程示意圖;圖3所示為本申請(qǐng)實(shí)施例二提供的圖片加載裝置的一種可能的結(jié)構(gòu)示意圖。具體實(shí)施方式由于對(duì)于android系統(tǒng)來(lái)說(shuō),堆內(nèi)存可分為java堆內(nèi)存和native堆內(nèi)存,且,native堆內(nèi)存是不計(jì)算在java堆內(nèi)存內(nèi)的,因而,在本申請(qǐng)所述實(shí)施例中,可基于這一點(diǎn)將解碼所得的圖片數(shù)據(jù)緩存在native堆內(nèi)存中,以便圖片加載時(shí)復(fù)用,這樣,由于native堆內(nèi)存不計(jì)算在應(yīng)用進(jìn)程的java堆內(nèi)存內(nèi),因而可有效降低進(jìn)程的堆內(nèi)存壓力,降低oom的觸發(fā)概率,同時(shí),還可達(dá)到更好地利用堆內(nèi)存實(shí)現(xiàn)圖片緩存,即更好地實(shí)現(xiàn)圖片解碼數(shù)據(jù)的復(fù)用的效果,以提高圖片加載效率并減少系統(tǒng)gc,進(jìn)而提升系統(tǒng)性能。為了使本申請(qǐng)的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本申請(qǐng)作進(jìn)一步地詳細(xì)描述,顯然,所描述的實(shí)施例僅僅是本申請(qǐng)一部分實(shí)施例,而不是全部的實(shí)施例?;诒旧暾?qǐng)中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其它實(shí)施例,都屬于本申請(qǐng)保護(hù)的范圍。實(shí)施例一:本申請(qǐng)實(shí)施例一提供了一種圖片加載方法,所述圖片加載方法可適用于任何基于android系統(tǒng)的客戶端或終端設(shè)備,對(duì)此不作限定。具體地,如圖1所示,所述圖片加載方法可包括以下步驟:步驟101:在對(duì)圖片進(jìn)行加載時(shí),判斷native堆內(nèi)存中是否緩存有該圖片的解碼數(shù)據(jù),若判斷結(jié)果為是,則執(zhí)行步驟102,否則,執(zhí)行步驟103??蛇x地,圖片的解碼數(shù)據(jù)通常為對(duì)該圖片進(jìn)行解碼所得到的bitmap對(duì)象的像素?cái)?shù)組數(shù)據(jù)。另外,由于在本申請(qǐng)所述實(shí)施例中,針對(duì)任一圖片,當(dāng)將該圖片的解碼數(shù)據(jù)緩存到native堆內(nèi)存中時(shí),通常會(huì)在nativecacheinfo(本機(jī)堆內(nèi)存緩存記錄信息)中生成一對(duì)應(yīng)的記錄數(shù)據(jù),因而,判斷native堆內(nèi)存中是否緩存有該圖片的解碼數(shù)據(jù),可執(zhí)行為:判斷是否能夠從nativecacheinfo中,獲取到與該圖片的解碼數(shù)據(jù)相對(duì)應(yīng)的記錄數(shù)據(jù),若判斷結(jié)果為是,則確定native堆內(nèi)存中緩存有該圖片的解碼數(shù)據(jù),否則,則確定native堆內(nèi)存中未緩存有該圖片的解碼數(shù)據(jù)。其中,所述nativecacheinfo中的每一記錄數(shù)據(jù)可包括與該記錄數(shù)據(jù)相對(duì)應(yīng)的圖片的寬、高、nativepointer(本機(jī)堆內(nèi)存指針,用于指明該記錄數(shù)據(jù)所對(duì)應(yīng)的解碼數(shù)據(jù)在native堆內(nèi)存中的存儲(chǔ)地址)、bitmap.config(用于指明圖片的每個(gè)像素所占用的內(nèi)存大小)、解碼數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度等屬性信息。另外,為了便于查找與記錄,每一記錄數(shù)據(jù)通??赏ㄟ^(guò)能夠唯一標(biāo)識(shí)該記錄數(shù)據(jù)對(duì)應(yīng)的圖片的標(biāo)識(shí)信息(或能夠唯一標(biāo)識(shí)該記錄數(shù)據(jù)對(duì)應(yīng)的圖片的解碼數(shù)據(jù)的標(biāo)識(shí)信息)進(jìn)行標(biāo)記,對(duì)此不作贅述。再有,由于nativecacheinfo所占用的內(nèi)存通常較小,因而,可將nativecacheinfo存儲(chǔ)于java堆內(nèi)存中(當(dāng)然,為了進(jìn)一步降低java堆內(nèi)存的存儲(chǔ)壓力,還可將nativecacheinfo存儲(chǔ)于native堆內(nèi)存中);并且,可采用lru對(duì)nativecacheinfo中的各記錄數(shù)據(jù)進(jìn)行管理,以便達(dá)到對(duì)nativecacheinfo中的各記錄數(shù)據(jù)以及堆內(nèi)存中的圖片緩存數(shù)據(jù)進(jìn)行實(shí)時(shí)維護(hù),在對(duì)應(yīng)淘汰相應(yīng)的記錄數(shù)據(jù)時(shí)將native堆內(nèi)存中的相應(yīng)解碼數(shù)據(jù)所占用的內(nèi)存同步釋放,以進(jìn)一步降低堆內(nèi)存壓力,減少oom概率的效果。另外,需要說(shuō)明的是,在本申請(qǐng)所述實(shí)施例中,還可通過(guò)其它方式來(lái)判斷native堆內(nèi)存中是否緩存有該圖片的解碼數(shù)據(jù),如,通過(guò)對(duì)native堆內(nèi)存中緩存的數(shù)據(jù)進(jìn)行逐條掃描的方式,來(lái)判斷native堆內(nèi)存中是否緩存有該圖片的解碼數(shù)據(jù),對(duì)此不作限定。步驟102:從native堆內(nèi)存中獲取該圖片的解碼數(shù)據(jù),并基于獲取到的解碼數(shù)據(jù)實(shí)現(xiàn)該圖片的加載。可選地,如圖2所示,步驟102所述的從native堆內(nèi)存中獲取該圖片的解碼數(shù)據(jù),并基于獲取到的解碼數(shù)據(jù)實(shí)現(xiàn)該圖片的加載,具體可包括以下步驟:步驟102a:判斷imageview(畫(huà)布)當(dāng)前顯示的bitmap對(duì)象是否滿足該圖片的解碼數(shù)據(jù)所需的重用條件,若滿足,則執(zhí)行步驟102b,若不滿足,則執(zhí)行步驟102c??蛇x地,對(duì)于android4.4以下版本的系統(tǒng)來(lái)說(shuō),當(dāng)imageview當(dāng)前顯示的bitmap對(duì)象所對(duì)應(yīng)的圖片的寬、高、bitmap.config,與該圖片的解碼數(shù)據(jù)所對(duì)應(yīng)的圖片的寬、高、bitmap.config完全一致,且,imageview當(dāng)前顯示的bitmap對(duì)象的屬性為mutable(即,可修改)時(shí),可認(rèn)為imageview當(dāng)前顯示的bitmap對(duì)象滿足該圖片的解碼數(shù)據(jù)所需的重用條件,否則,則認(rèn)為其不滿足該圖片的解碼數(shù)據(jù)所需的重用條件;而對(duì)于android4.4及以上版本的系統(tǒng)來(lái)說(shuō),當(dāng)imageview當(dāng)前顯示的bitmap對(duì)象所對(duì)應(yīng)的圖片的寬、高、每個(gè)像素所占用的內(nèi)存三者的乘積不小于該圖片的解碼數(shù)據(jù)的數(shù)據(jù)長(zhǎng)度時(shí),可認(rèn)為imageview當(dāng)前顯示的bitmap對(duì)象滿足該圖片的解碼數(shù)據(jù)所需的重用條件,否則,則認(rèn)為其不滿足該圖片的解碼數(shù)據(jù)所需的重用條件。步驟102b:將native堆內(nèi)存中緩存的、對(duì)該圖片進(jìn)行解碼所得到的bitmap對(duì)象的像素?cái)?shù)組數(shù)據(jù)拷貝到imageview當(dāng)前顯示的bitmap對(duì)象中,得到新的bitmap對(duì)象,并將新的bitmap對(duì)象渲染到imageview中,以實(shí)現(xiàn)該圖片的加載。也就是說(shuō),當(dāng)imageview上已經(jīng)顯示有a圖(bitmap-a)時(shí),若需要顯示b圖(bitmap-b),則無(wú)需將imageview上顯示的a圖移除,再換上b圖,而是,只要將b圖和imageview重新綁定,把b圖的像素?cái)?shù)組數(shù)據(jù)拷貝到a圖上即可,以提高圖片加載的效率??蛇x地,為了防止imageview中的老數(shù)據(jù)有可能干擾新數(shù)據(jù)的顯示,在將該圖片的bitmap對(duì)象的像素?cái)?shù)組數(shù)據(jù)拷貝到imageview當(dāng)前顯示的bitmap對(duì)象中之前,還可首先對(duì)imageview當(dāng)前顯示的bitmap對(duì)象中的像素?cái)?shù)組數(shù)據(jù)進(jìn)行清除,對(duì)此不作贅述。步驟102c:從reusablebitmappool(位圖文件池)中獲取一符合該圖片的解碼數(shù)據(jù)所需的重用條件的bitmap對(duì)象、或者創(chuàng)建一符合該圖片的解碼數(shù)據(jù)所需的重用條件的bitmap對(duì)象,并將native堆內(nèi)存中緩存的、對(duì)該圖片進(jìn)行解碼所得到的bitmap對(duì)象的像素?cái)?shù)組數(shù)據(jù)拷貝到獲取到的或者創(chuàng)建的bitmap對(duì)象中,得到新的bitmap對(duì)象,并將新的bitmap對(duì)象渲染到imageview中,以實(shí)現(xiàn)該圖片的加載??蛇x地,如圖2所示,在執(zhí)行步驟102c之前,還可首先將imageview當(dāng)前顯示的bitmap對(duì)象存放至reusablebitmappool中(對(duì)應(yīng)步驟102c’),以便其它圖片加載時(shí)復(fù)用(因?yàn)殡m然該當(dāng)前bitmap對(duì)象不一定能滿足當(dāng)前待加載圖片的復(fù)用條件,但其很有可能能滿足其它圖片的復(fù)用條件),以進(jìn)一步提高圖片加載的效率并減少系統(tǒng)的gc。其中,所述reusablebitmappool通??晌挥趈ava堆內(nèi)存中、且其引用方式為軟引用,以便可以在內(nèi)存不緊張時(shí),有效地利用原有資源,減少gc,也可以在系統(tǒng)需要內(nèi)存時(shí),及時(shí)釋放,不會(huì)導(dǎo)致oom。另外,為了降低堆內(nèi)存的存儲(chǔ)壓力,reusablebitmappool中存儲(chǔ)的各bitmap對(duì)象還可為清除了像素?cái)?shù)組數(shù)據(jù)的bitmap對(duì)象,即為一個(gè)可被其它圖片復(fù)用的bitmap對(duì)象框架。進(jìn)一步地,需要說(shuō)明的是,在執(zhí)行步驟102c的過(guò)程中,可首先判斷是否能夠從reusablebitmappool中獲取一符合該圖片的解碼數(shù)據(jù)所需的重用條件的bitmap對(duì)象,若是,則無(wú)需再執(zhí)行創(chuàng)建一符合該圖片的解碼數(shù)據(jù)所需的重用條件的bitmap對(duì)象的操作(即,可在確定為否時(shí),再執(zhí)行創(chuàng)建一符合該圖片的解碼數(shù)據(jù)所需的重用條件的bitmap對(duì)象的操作),以進(jìn)一步提高圖片加載效率并減少系統(tǒng)的gc??蛇x地,通常來(lái)說(shuō),通過(guò)調(diào)用系統(tǒng)api并傳入要顯示的圖片的寬、高、bitmap.config即可創(chuàng)建一符合該圖片的解碼數(shù)據(jù)所需的重用條件的bitmap對(duì)象,對(duì)此不作贅述。再有,需要說(shuō)明的是,為了防止老數(shù)據(jù)有可能干擾新數(shù)據(jù)的顯示,在將該圖片的bitmap對(duì)象的像素?cái)?shù)組數(shù)據(jù)拷貝到獲取到的bitmap對(duì)象或創(chuàng)建的bitmap對(duì)象中之前,若確定獲取到的bitmap對(duì)象或創(chuàng)建的bitmap對(duì)象中的像素?cái)?shù)組數(shù)據(jù)不為空,則也可首先對(duì)獲取到的bitmap對(duì)象或創(chuàng)建的bitmap對(duì)象中的像素?cái)?shù)組數(shù)據(jù)進(jìn)行清除,對(duì)此也不作贅述。進(jìn)一步可選地,如圖2可知,在從native堆內(nèi)存中獲取該圖片的解碼數(shù)據(jù)之前,所述方法還可包括以下步驟:步驟104:判斷native堆內(nèi)存中緩存的該圖片的解碼數(shù)據(jù)是否有效,并確定判斷結(jié)果為是。即,通常可在判定native堆內(nèi)存中緩存的該圖片的解碼數(shù)據(jù)有效時(shí),再?gòu)膎ative堆內(nèi)存中獲取該圖片的解碼數(shù)據(jù)??蛇x地,判斷native堆內(nèi)存中緩存的該圖片的解碼數(shù)據(jù)是否有效,可執(zhí)行為:判斷nativecacheinfo中的、與該圖片的解碼數(shù)據(jù)相對(duì)應(yīng)的記錄數(shù)據(jù)中的nativepointer是否為有效指針,若判斷結(jié)果為是,則確定native堆內(nèi)存中緩存的該圖片的解碼數(shù)據(jù)有效。另外,由圖2可知,若確定native堆內(nèi)存中緩存的該圖片的解碼數(shù)據(jù)無(wú)效,則可直接跳轉(zhuǎn)至步驟103,即執(zhí)行從存儲(chǔ)有該圖片的存儲(chǔ)空間處獲取并加載該圖片,并將加載該圖片的過(guò)程中所得到的該圖片的解碼數(shù)據(jù)緩存到native堆內(nèi)存中的操作。進(jìn)一步地,在從native堆內(nèi)存中獲取該圖片的解碼數(shù)據(jù)之前,所述方法還可包括以下步驟:若確定imageview當(dāng)前顯示的bitmap對(duì)象所對(duì)應(yīng)的圖片非首次加載,則將imageview中當(dāng)前顯示的bitmap對(duì)象的像素?cái)?shù)組數(shù)據(jù)取出并緩存到native堆內(nèi)存中,以便下一次顯示時(shí)復(fù)用。另外,如前文所述,當(dāng)將imageview中當(dāng)前顯示的bitmap對(duì)象的像素?cái)?shù)組數(shù)據(jù)緩存到native堆內(nèi)存中時(shí),可在nativecacheinfo中生成一對(duì)應(yīng)的記錄數(shù)據(jù),對(duì)此不作贅述。步驟103:從存儲(chǔ)有該圖片的存儲(chǔ)空間處獲取并加載該圖片,并將加載該圖片的過(guò)程中所得到的該圖片的解碼數(shù)據(jù)緩存到native堆內(nèi)存中。可選地,存儲(chǔ)有該圖片的存儲(chǔ)空間可為本地磁盤(pán)緩存、本地文件或者網(wǎng)絡(luò)等;且,對(duì)獲取到的圖片進(jìn)行加載可包括對(duì)獲取到的圖片進(jìn)行解碼得到bitmap對(duì)象,并對(duì)bitmap對(duì)象進(jìn)行渲染等操作。另外,如前文所述,當(dāng)將加載該圖片的過(guò)程中所得到的該圖片的解碼數(shù)據(jù)緩存到native堆內(nèi)存中時(shí),也可在nativecacheinfo中生成一對(duì)應(yīng)的記錄數(shù)據(jù)。至此,即可完成當(dāng)前待加載圖片的加載操作。由本申請(qǐng)實(shí)施例所述內(nèi)容可知,在本申請(qǐng)所述實(shí)施例中,可將解碼所得的圖片數(shù)據(jù)緩存在本機(jī)堆內(nèi)存,即native堆內(nèi)存中,以便圖片加載時(shí)復(fù)用,這樣,由于native堆內(nèi)存不計(jì)算在應(yīng)用進(jìn)程的java堆內(nèi)存內(nèi),因而可有效降低java堆內(nèi)存的壓力,降低oom的觸發(fā)概率,同時(shí),還可達(dá)到更好地利用堆內(nèi)存實(shí)現(xiàn)圖片緩存,以提高圖片加載效率并減少系統(tǒng)gc的效果。實(shí)施例二:基于與本申請(qǐng)實(shí)施例一中的圖片加載方法同樣的發(fā)明構(gòu)思,本申請(qǐng)實(shí)施例二提供了一種圖片加載裝置,所述圖片加載裝置的具體實(shí)施可參見(jiàn)上述方法實(shí)施例一中的相關(guān)描述,重復(fù)之處不再贅述,具體地,如圖3所示,所述圖片加載裝置可包括:判斷單元31,可用于在對(duì)圖片進(jìn)行加載時(shí),判斷native堆內(nèi)存中是否緩存有該圖片的解碼數(shù)據(jù);執(zhí)行單元32,可用于若確定native堆內(nèi)存中緩存有該圖片的解碼數(shù)據(jù),則從native堆內(nèi)存中獲取該圖片的解碼數(shù)據(jù),并基于獲取到的解碼數(shù)據(jù)實(shí)現(xiàn)該圖片的加載;否則,從存儲(chǔ)有該圖片的存儲(chǔ)空間處獲取并加載該圖片,并將加載該圖片的過(guò)程中所得到的該圖片的解碼數(shù)據(jù)緩存到native堆內(nèi)存中??蛇x地,所述判斷單元31具體可用于判斷是否能夠從本機(jī)堆內(nèi)存緩存記錄信息中,獲取到與該圖片的解碼數(shù)據(jù)相對(duì)應(yīng)的記錄數(shù)據(jù),若判斷結(jié)果為是,則確定native堆內(nèi)存中緩存有該圖片的解碼數(shù)據(jù)。可選地,所述執(zhí)行單元32具體可用于在判定native堆內(nèi)存中緩存的該圖片的解碼數(shù)據(jù)有效時(shí),則從native堆內(nèi)存中獲取該圖片的解碼數(shù)據(jù)??蛇x地,所述執(zhí)行單元32具體可用于判斷本機(jī)堆內(nèi)存緩存記錄信息中的、與該圖片的解碼數(shù)據(jù)相對(duì)應(yīng)的記錄數(shù)據(jù)中的本機(jī)堆內(nèi)存指針是否為有效指針,若判斷結(jié)果為是,則確定native堆內(nèi)存中緩存的該圖片的解碼數(shù)據(jù)有效;其中,所述本機(jī)堆內(nèi)存緩存記錄信息中的每一記錄數(shù)據(jù)中的本機(jī)堆內(nèi)存指針用于指明該記錄數(shù)據(jù)所對(duì)應(yīng)的解碼數(shù)據(jù)在native堆內(nèi)存中的存儲(chǔ)地址。另外,需要說(shuō)明的是,所述本機(jī)堆內(nèi)存緩存記錄信息可位于java堆內(nèi)存中,且,所述本機(jī)堆內(nèi)存緩存記錄信息中的各記錄數(shù)據(jù)采用lru進(jìn)行管理??蛇x地,該圖片的解碼數(shù)據(jù)通??蔀閷?duì)該圖片進(jìn)行解碼所得到的bitmap對(duì)象的像素?cái)?shù)組數(shù)據(jù);所述執(zhí)行單元32具體可用于判斷imageview當(dāng)前顯示的bitmap對(duì)象是否滿足該圖片的解碼數(shù)據(jù)所需的重用條件;若滿足,則將native堆內(nèi)存中緩存的、對(duì)該圖片進(jìn)行解碼所得到的bitmap對(duì)象的像素?cái)?shù)組數(shù)據(jù)拷貝到imageview當(dāng)前顯示的bitmap對(duì)象中,得到新的bitmap對(duì)象,并將新的bitmap對(duì)象渲染到imageview中,以實(shí)現(xiàn)該圖片的加載;若不滿足,則從位圖文件池中獲取一符合該圖片的解碼數(shù)據(jù)所需的重用條件的bitmap對(duì)象、或者創(chuàng)建一符合該圖片的解碼數(shù)據(jù)所需的重用條件的bitmap對(duì)象,并將native堆內(nèi)存中緩存的、對(duì)該圖片進(jìn)行解碼所得到的bitmap對(duì)象的像素?cái)?shù)組數(shù)據(jù)拷貝到獲取到的或者創(chuàng)建的bitmap對(duì)象中,得到新的bitmap對(duì)象,并將新的bitmap對(duì)象渲染到imageview中,以實(shí)現(xiàn)該圖片的加載;其中,所述位圖文件池位于java堆內(nèi)存中、且其引用方式為軟引用。進(jìn)一步可選地,所述執(zhí)行單元32還可用于若確定imageview當(dāng)前顯示的bitmap對(duì)象不滿足該圖片的解碼數(shù)據(jù)所需的重用條件,則將imageview當(dāng)前顯示的bitmap對(duì)象存放至所述位圖文件池中。本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、裝置(設(shè)備)、或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。本申請(qǐng)是參照根據(jù)本申請(qǐng)實(shí)施例的方法、裝置(設(shè)備)和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。盡管已描述了本申請(qǐng)的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對(duì)這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本申請(qǐng)范圍的所有變更和修改。顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本申請(qǐng)進(jìn)行各種改動(dòng)和變型而不脫離本申請(qǐng)的精神和范圍。這樣,倘若本申請(qǐng)的這些修改和變型屬于本申請(qǐng)權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本申請(qǐng)也意圖包含這些改動(dòng)和變型在內(nèi)。當(dāng)前第1頁(yè)12當(dāng)前第1頁(yè)12
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
望谟县| 吴川市| 凤城市| 永昌县| 二连浩特市| 康保县| 彭水| 布尔津县| 上虞市| 宣汉县| 洪雅县| 封丘县| 拉孜县| 嘉兴市| 阿拉善盟| 宿迁市| 泸西县| 延川县| 南投县| 民县| 银川市| 固始县| 晋江市| 青岛市| 沧州市| 齐齐哈尔市| 河北区| 南江县| 莱州市| 德州市| 东至县| 神池县| 三河市| 玉田县| 洛阳市| 邳州市| 眉山市| 汉川市| 惠安县| 景泰县| 天祝|