日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > Android載入圖片OOM錯誤解決方案

Android載入圖片OOM錯誤解決方案

來源:程序員人生   發布時間:2014-11-12 09:11:09 閱讀次數:3291次

 

頭幾天做項目的時候,甲方要求是PAD (SAMSUNG P600 10.1寸 2560*1600)的PAD上顯示高分辨率的大圖片。

SQLITE采取BOLD方式存儲圖片,這個存取進程就不說了哈,網上1大堆。

但是在載入/讀取/顯示圖片的時候會報OOM毛病,上網查了很多解決方案還繞了很多彎路,最后還是找到了緣由所在,下面從幾個方面來解釋1下OOM問題的解決方案。

(謝謝周同學的“尺寸”提示,不然我可能1輩子都要蒙在鼓里)

 

1.Android APP內存

做1個APP開發的時候,還是不要想著去擴大Android系統賦予的內存上限了,部份老機型老系統16M,大部份都是24M了。

1些大型游戲用dalvik.system.VMRuntime來干涉GC進程(這個類我還沒有學過。。。剛聽說不久)。

聽說用NDK開發時候,C可以動態申請過剩的內存空間,但是我沒用過NDK,今后也不打算用了(個人緣由)。

 

2.圖片文件大小

甲方給了1大堆文件大小不1的圖片,在載入http://www.jyygyx.com/db/->讀取出來->顯示出來的這個進程中,出現了很多OOM,分為:

a.載入圖片時使用ByteArrayStream創建流,size為Height * Width * 4,OOM;

b.讀取圖片時候OOM,同上;

c.顯示圖片時候OOM,decodeResource函數報錯,OOM;

開始時候以為是文件大小問題,后來發現有些2M的圖片都能顯示,但是某些1M的圖片確報錯,所以在1定范圍內,可以證明,圖片OOM問題與文件大小無關。

 

3.圖片尺寸(分辨率)

調查這些能顯示的圖片和不能顯示的圖片的不同,發現長寬差距很大,那些能成功顯示的圖片為1005*1500大小,而其他圖片都是3000*5000以上。

我用PAINT(1款合適小白的圖象處理軟件,雖然不如PS但是功能已非常強大了,最新版需要安裝NET 4.5)緊縮了圖片大小,緊縮到1005*1500,顯示成功。

 

4.函數調用

瀏覽了這位大神的博客:

http://blog.csdn.net/huangbiao86/article/details/8072128

摘取其中最精華的部份吧:

盡可能不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource來設置1張大圖,由于這些函數在完成decode后,終究都是通過java層的createBitmap來完成的,需要消耗更多內存。

 

因此,改用先通過BitmapFactory.decodeStream方法,創建出1個bitmap,再將其設為ImageView的 source,decodeStream最大的秘密在于其直接調用JNI>>nativeDecodeAsset()來完成decode,無需再使用java層的createBitmap,從而節省了java層的空間。


如果在讀取時加上圖片的Config參數,可以跟有效減少加載的內存,從而跟有效禁止拋out of Memory異常


另外,decodeStream直接拿的圖片來讀取字節碼了, 不會根據機器的各種分辨率來自動適應, 使用了decodeStream以后,需要在hdpi和mdpi,ldpi中配置相應的圖片資源, 否則在不同分辨率機器上都是一樣大?。ㄏ袼攸c數量),顯示出來的大小就不對了。

看來讀底層源碼還是很有用的,setImageBitmap 和 setImageResource 和 decodeResource在履行進程中還是調用了createBitmap來創建1個新的bitmap,創建bitmap會加重內存消耗,所以不推薦使用了,應當使用decodeStream方法。

圖片的緊縮進程也能夠設置1個適合的百分比來控制大小。

多張圖片的使用中,請注意流的flush與close(我沒有及時flush和close的時候也運行正確了,這個有待研究1下,但是為了保證1個良好的習慣還是注意下吧)。

 

5.關于options方法

網上還有很多文章用BitmapFactory.Options來作為decodeStream時候的1個參數,這個我暫時沒有具體實驗過,哪位朋友實驗過了可以回復交換哈

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩电影av在线 | 一区在线视频 | 精品三级国产 | 欧美资源在线 | 国产精品区一区二区三含羞草 | 日韩三级中文字幕 | 久久久久久国产 | 精品一二三区在线观看 | 中文av在线播放 | 可以看黄色的网站 | 中文字字幕在线中文 | 色综合久久88色综合天天 | 国内精品一区二区三区 | 亚洲精品国产电影 | 777久久 | 欧美在线激情 | 中文av字幕在线观看 | 欧美色精品| www黄色 | 久久一级精品 | 日韩在线观看中文字幕 | 国产精品一 | 裸体在线国模精品偷拍 | 国产成人在线免费观看 | 国产精品国产三级国产aⅴ原创 | 欧洲精品码一区二区三区免费看 | 中文字幕欧美在线 | 免费在线观看黄色 | 91国产大片 | 久久精品国产欧美亚洲人人爽 | 国产精品xxx在线观看www | 黄色av免费网站 | 精品一区二区久久久久久久网站 | 久久精品国产久精国产 | 日韩欧美在线免费观看 | 亚洲精品在 | 伊人色综合网 | 日韩中文字幕网站 | 99久久久无码国产精品 | 久久久国产成人一区二区三区 | 成人免费一区二区三区视频网站 |