日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android Bitmap OutOfMemory 解决的方法

發(fā)布時間:2023/12/19 Android 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android Bitmap OutOfMemory 解决的方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

????? 在Android應用里,最耗費內(nèi)存的就是圖片資源。并且在Android系統(tǒng)中。讀取位圖Bitmap時,分給虛擬機中的圖片的堆棧大小僅僅有8M。假設超出了。就會出現(xiàn)OutOfMemory異常

E/AndroidRuntime(? 697): java.lang.OutOfMemoryError
E/AndroidRuntime(? 697): ?? ?at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
E/AndroidRuntime(? 697): ?? ?at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:500)
E/AndroidRuntime(? 697): ?? ?at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:353)
E/AndroidRuntime(? 697): ?? ?at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:376)
E/AndroidRuntime(? 697): ?? ?at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:406)
E/AndroidRuntime(? 697): ?? ?at com.example.imagetoshow2.ImageAdapter.createReflectedImages(ImageAdapter.java:66)
E/AndroidRuntime(? 697): ?? ?at com.example.imagetoshow2.ImageAdapter.getView(ImageAdapter.java:54)
E/AndroidRuntime(? 697): ?? ?at android.widget.AbsSpinner.onMeasure(AbsSpinner.java:193)


解決的方法:

1.及時回收內(nèi)存

if(bitmap != null && !bitmap.isRecycled()){ // 回收而且置為nullbitmap.recycle(); bitmap = null; } System.gc();在適當?shù)牡胤绞褂蒙鲜龃a,將臨時不需使用的的回收掉。當然system.gc不應該頻繁調(diào)用,否則會使系統(tǒng)效率減少。


2.使用BitmapFactory.Options對圖片進行壓縮

BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inSampleSize = n; bitmap = BitmapFactory.decodeStream(fis, null, opts);
使用inSampleSize設置放縮比例,默認值為0,設置一個大于0的數(shù)便可對圖片進行壓縮。

BitmapFactory.Options opts = new BitmapFactory.Options();// 設置inJustDecodeBounds為trueopts.inJustDecodeBounds = true;// 使用decodeFile方法得到圖片的寬和高BitmapFactory.decodeFile(path, opts);
使inJustDecodeBounds為true后,再使用decodeFile()等方法,并不會真正的分配空間,即解碼出來的Bitmap為null。僅僅會計算出options.outWidth和options.outHeight值。在下次使用BitmapFactory的decodeFile()等方法實例化Bitmap對象前。將opts.inJustDecodeBound設置回false就能夠得到圖片了。


3.代碼優(yōu)化

為了避免應用在分配Bitmap內(nèi)存的時候出現(xiàn)OutOfMemory異常停止執(zhí)行。通常。在實例化Bitmap的代碼中,對OutOfMemory異常進行捕獲

<span style="font-size:18px;"> <span style="font-size:18px;">Bitmap bitmap = null; try {// 實例化Bitmapbitmap = BitmapFactory.decodeFile(path); } catch (OutOfMemoryError e) {// }</span></span>然后在Catch部分做一些內(nèi)存回收操作。或者是使用緩存圖片等...

總是良好的編程風格和優(yōu)質(zhì)的代碼結(jié)構(gòu)是程序猿的無上追求....

轉(zhuǎn)載于:https://www.cnblogs.com/mengfanrong/p/5055139.html

總結(jié)

以上是生活随笔為你收集整理的Android Bitmap OutOfMemory 解决的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。