国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 網(wǎng)站 > 建站經(jīng)驗(yàn) > 正文

Android加載圖片內(nèi)存溢出問-題解決方法

2019-11-02 15:19:52
字體:
供稿:網(wǎng)友

   這篇文章主要介紹了Android加載圖片內(nèi)存溢出問題解決方法,本文講解使用BitmapFactory.Options解決內(nèi)存溢出問題,需要的朋友可以參考下

  1. 在Android軟件開發(fā)過程中,圖片處理是經(jīng)常遇到的。 在將圖片轉(zhuǎn)換成Bitmap的時(shí)候,由于圖片的大小不一樣,當(dāng)遇到很大的圖片的時(shí)候會(huì)出現(xiàn)超出內(nèi)存的問題,為了解決這個(gè)問題Android API提供了BitmapFactory.Options這個(gè)類.

  2. 由于Android對(duì)圖片使用內(nèi)存有限制,若是加載幾兆的大圖片便內(nèi)存溢出。Bitmap會(huì)將圖片的所有像素(即長(zhǎng)x寬)加載到內(nèi)存中,如果圖片分辨率過大,會(huì)直接導(dǎo)致內(nèi)存OOM,只有在BitmapFactory加載圖片時(shí)使用BitmapFactory.Options對(duì)相關(guān)參數(shù)進(jìn)行配置來減少加載的像素。

  3. BitmapFactory.Options相關(guān)參數(shù)詳解:

  (1).Options.inPreferredConfig值來降低內(nèi)存消耗。

  比如:默認(rèn)值A(chǔ)RGB_8888改為RGB_565,節(jié)約一半內(nèi)存。

  (2).設(shè)置Options.inSampleSize 縮放比例,對(duì)大圖片進(jìn)行壓縮 。

  (3).設(shè)置Options.inPurgeable和inInputShareable:讓系統(tǒng)能及時(shí)回 收內(nèi)存。

  A:inPurgeable:設(shè)置為True時(shí),表示系統(tǒng)內(nèi)存不足時(shí)可以被回 收,設(shè)置為False時(shí),表示不能被回收。

  B:inInputShareable:設(shè)置是否深拷貝,與inPurgeable結(jié)合使用,inPurgeable為false時(shí),該參數(shù)無意義。

  (4).使用decodeStream代替其他方法。

  decodeResource,setImageResource,setImageBitmap等方法

  4.代碼部分:

  ?

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 public static Bitmap getBitmapFromFile(File file, int width, int height) {   BitmapFactory.Options opts = null; if (null
破曉電影網(wǎng)[www.aikan.tv/special/poxiaodianyingwang/]
!= file && file.exists()) {   if (width > 0 && height > 0) { opts = new BitmapFactory.Options(); // 只是返回的是圖片的寬和高,并不是返回一個(gè)Bitmap對(duì)象 opts.inJustDecodeBounds = true; // 信息沒有保存在bitmap里面,而是保存在options里面 BitmapFactory.decodeFile(file.getPath(), opts); // 計(jì)算圖片縮放比例 final int minSideLength = Math.min(width, height); // 縮略圖大小為原始圖片大小的幾分之一。根據(jù)業(yè)務(wù)需求來做。 opts.inSampleSize = computeSampleSize(opts, minSideLength, width * height); // 重新讀入圖片,注意此時(shí)已經(jīng)把options.inJustDecodeBounds設(shè)回false opts.inJustDecodeBounds = false; // 設(shè)置是否深拷貝,與inPurgeable結(jié)合使用 opts.inInputShareable = true; // 設(shè)置為True時(shí),表示系統(tǒng)內(nèi)存不足時(shí)可以被回 收,設(shè)置為False時(shí),表示不能被回收。 opts.inPurgeable = true; } try { return BitmapFactory.decodeFile(file.getPath(), opts); } catch (OutOfMemoryError e) { e.printStackTrace(); } } return null; }
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 临潭县| 绥棱县| 石门县| 天台县| 平塘县| 汝南县| 喀什市| 巴里| 鲁甸县| 阳信县| 贵南县| 益阳市| 西乌珠穆沁旗| 棋牌| 若羌县| 茂名市| 庆元县| 阿拉善盟| 南江县| 赣州市| 高雄县| 平顶山市| 孟州市| 四子王旗| 乐安县| 涡阳县| 安化县| 莱西市| 泸水县| 葫芦岛市| 叙永县| 洞口县| 神农架林区| 吕梁市| 石嘴山市| 南丹县| 壶关县| 阳信县| 海丰县| 黄龙县| 竹北市|