Bitmaps加載之介紹

介紹

Android開發(fā)應(yīng)用過程中加載bitmap是很tricky的,如果你稍微不注意,bitmaps就會快速消耗光應(yīng)用的可用內(nèi)存,導(dǎo)致應(yīng)用奔潰,拋出OutofMemoryError異常,俗稱OOM:

java.lang.OutofMemoryError: bitmap size exceeds VM budget.

而這主要有幾個原因:

  1. Android設(shè)備給每個應(yīng)用分配的可用內(nèi)存為16M,但是這個值因機型而異(下面有獲取分配內(nèi)存大小的方法),現(xiàn)在的很多機子分配的limit都高出很多了,對于應(yīng)用來說,要將使用的內(nèi)存控制在這個limit以內(nèi).
  2. Bitmap會占用大量內(nèi)存尤其是照片,比如5百萬像素的攝像頭拍的照片大小為2592x1936 pixels, 如果bitmap的配置使用ARGB_8888(Android 2.3以后的默認(rèn)值),那么加載一張照片就占用了將近19M的內(nèi)存(2592*1936*4 bytes),瞬間就將應(yīng)用的內(nèi)存limit消耗光了,特別是內(nèi)存limit較小的設(shè)備.
  3. Android應(yīng)用的一些UI組件經(jīng)常需要一次性加載多張bitmaps,比如ListView,GridView和ViewPager.

官網(wǎng)提供的五個教學(xué)課程來加載Bitmap

  1. Loading Large Bitmaps Efficiently
  2. Processing Bitmaps Off the UI Thread
  3. Caching Bitmaps
  4. Managing Bitmap Memory
  5. Displaying Bitmaps in Your UI

Bitmap.Config的具體配置如下表:

Bitmap.Config Description
ALPHA_8 Each pixel is stored as a single translucency (alpha) channel
ARGB_4444 This field was deprecated in API level 13. Because of the poor quality of this configuration, it is advised to use ARGB_8888 instead.
ARGB_8888 Each pixel is stored on 4 bytes.
RGB_565 Each pixel is stored on 2 bytes and only the RGB channels are encoded: red is stored with 5 bits of precision (32 possible values), green is stored with 6 bits of precision (64 possible values) and blue is stored with 5 bits of precision.

獲取應(yīng)用分配的最大內(nèi)存大小的方法:

  1. Runtime的maxMemory()方法返回bytes
  2. ActivityManager的getMemoryClass()方法返回megabytes
    例:
// get max memory by runtime
long maxBytes=Runtime.getRuntime().maxMemory();
Log.i("Log","maxMemory: "+maxBytes/1024/1024+" M");
// get max memory by activity manager
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
int maxMemory = activityManager.getMemoryClass();
Log.i("Log","memClass: "+maxMemory+" M");

結(jié)果輸出:

Log: maxMemory: 256 M
Log: memClass: 256 M

Reference

  1. Displaying Bitmaps Efficiently
  2. Bitmap.Config
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子鉴分,更是在濱河造成了極大的恐慌,老刑警劉巖贬丛,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異给涕,居然都是意外死亡豺憔,警方通過查閱死者的電腦和手機额获,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來恭应,“玉大人抄邀,你說我怎么就攤上這事≈玳唬” “怎么了境肾?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長胆屿。 經(jīng)常有香客問我奥喻,道長,這世上最難降的妖魔是什么非迹? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任衫嵌,我火速辦了婚禮,結(jié)果婚禮上彻秆,老公的妹妹穿的比我還像新娘。我一直安慰自己结闸,他們只是感情好唇兑,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著桦锄,像睡著了一般扎附。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上结耀,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天留夜,我揣著相機與錄音,去河邊找鬼图甜。 笑死碍粥,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的黑毅。 我是一名探鬼主播嚼摩,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼矿瘦!你這毒婦竟也來了枕面?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤缚去,失蹤者是張志新(化名)和其女友劉穎潮秘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體易结,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡枕荞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年柜候,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片买猖。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡改橘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出玉控,到底是詐尸還是另有隱情飞主,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布高诺,位于F島的核電站碌识,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏虱而。R本人自食惡果不足惜筏餐,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望牡拇。 院中可真熱鬧魁瞪,春花似錦、人聲如沸惠呼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽剔蹋。三九已至旅薄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間泣崩,已是汗流浹背少梁。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留矫付,地道東北人凯沪。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像技即,于是被迫代替她去往敵國和親著洼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,867評論 25 707
  • HereAndroid的內(nèi)存優(yōu)化是性能優(yōu)化中很重要的一部分而叼,而避免OOM又是內(nèi)存優(yōu)化中比較核心的一點身笤。這是一篇關(guān)于...
    HarryXR閱讀 3,806評論 1 24
  • 本文轉(zhuǎn)載來源 http://www.csdn.net/article/2015-09-18/2825737/1 (...
    yoosir閱讀 1,088評論 0 5
  • 在我賴在被子里與床難舍難分的時候。媽媽的聲音充斥著我的耳朵葵陵∫狠可是,我卻在囈語著說就一會時進(jìn)入了另外一個世界里-...
    我是太陽何須畏懼光閱讀 287評論 0 0
  • 在中國脱篙,農(nóng)民是沒有退休金的娇钱,現(xiàn)在雖說有了一點養(yǎng)老金伤柄,但那點微薄的養(yǎng)老金,和國家或地方編制內(nèi)各種形形色色的工...
    芭蕉皇族閱讀 475評論 0 0