Android手動(dòng)回收ImageVIew圖片資源正確姿勢

圖片資源占用大部分內(nèi)存慎王,當(dāng)圖片不再使用時(shí),如何回收ImageView的圖片資源呢宏侍?
百度下,找到的大部分解決辦法如下:
赖淤、、谅河、
public void releaseImageViewResouce(ImageView imageView)
{ if (imageView == null)
return;
Drawable drawable = imageView.getDrawable();
if (drawable != null && drawable instanceof BitmapDrawable)
{
BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
Bitmap bitmap = bitmapDrawable.getBitmap();
if (bitmap != null && !bitmap.isRecycled())
{
bitmap.recycle();
}
}
}
咱旱、、绷耍、
心里疑問吐限,這樣真的能回收嗎?于是做了一個(gè)小實(shí)驗(yàn)
(1)布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"

<Button
    android:id="@+id/btn"
    android:layout_width="150dp"
    android:layout_height="50dp"
    android:text="回收"
    android:textColor="#454544"
    android:textSize="25sp"
    />
<ImageView
    android:id="@+id/img"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    />

</LinearLayout>
(2)代碼如下:
public class MainActivity extends AppCompatActivity
{
private LinearLayout mLl;
private Button btn;
private ImageView imageView;
@Override
protected void onCreate(BundlsavedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mLl = (LinearLayout) findViewById(R.id.activity_main);
btn = (Button) findViewById(R.id.btn);
imageView = (ImageView) findViewById(R.id.img); imageView.setImageResource(R.drawable.img);
btn.setOnClickListener(new View.OnClickListener()
{ @Override
public void onClick(View v)
{
releaseImageViewResouce(imageView);
}
});
}
public void releaseImageViewResouce(ImageView imageView)
{
if (imageView == null)
return;
Drawable drawable = imageView.getDrawable();
if (drawable != null && drawable instanceof BitmapDrawable)
{
BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; Bitmap bitmap = bitmapDrawable.getBitmap();
if (bitmap != null && !bitmap.isRecycled())
{
bitmap.recycle();
}
}
}
}

開始試驗(yàn)
(1)自動(dòng)觸發(fā)gc——as 點(diǎn)擊小車子的按鈕可以觸發(fā)gc

QQ截圖20170108195940.png

(2)沒有圖片資源如下圖:
沒有圖片資源要消耗2.27MB內(nèi)存


QQ截圖20170108200253.png
QQ圖片20170108200412.png

(3)有圖片資源如下圖
有圖片資源要消耗12.72MB內(nèi)存

QQ截圖20170108202938.png
QQ截圖20170108202848.png

(4)點(diǎn)擊回收按鈕觸發(fā)
releaseImageViewResouce(ImageView imageView)方法回收圖片資源褂始,并且觸發(fā)gc诸典,雖然消耗內(nèi)存變小了一點(diǎn),但是還是消耗12.58MB崎苗。說明圖片資源沒有被回收

QQ截圖20170108203248.png

那怎么才能回收圖片資源呢狐粱??胆数?脑奠??幅慌??轰豆?忽然靈光一現(xiàn)胰伍,如果把imageview從父容器中移除能不能到達(dá)回收圖片資源呢!酸休!
releaseImageViewResouce()方法改動(dòng)如下:
public void releaseImageViewResouce()
{
if (imageView == null) return;
Drawable drawable = imageView.getDrawable();
if (drawable != null && drawable instanceof BitmapDrawable)
{
BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable;
Bitmap bitmap = bitmapDrawable.getBitmap();
if (bitmap != null && !bitmap.isRecycled())
{
bitmap.recycle();
}
//將imageView從父容器移除骂租,并將imag置為null
if(mLl!=null&&imageView!=null)
{
mLl.removeView(imageView);
imageView=null;
}
}
}
立即運(yùn)行代碼,并且觸發(fā)gc斑司,結(jié)果喜聞樂見渗饮,圖片資源被回收了。結(jié)果如下圖:


QQ截圖20170108204537.png

最后總結(jié)下:要想手動(dòng)回收imageView圖片資源,應(yīng)該在代碼中new ImageView并添加到父容器中互站。當(dāng)要回收ImageView圖片資源時(shí)調(diào)用releaseImageViewResouce()方法并將imageView從父容器移除私蕾,并將imag置為null。這樣就能回收圖片資源了:摇2劝取!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末翠胰,一起剝皮案震驚了整個(gè)濱河市容贝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌之景,老刑警劉巖斤富,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異锻狗,居然都是意外死亡满力,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進(jìn)店門屋谭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脚囊,“玉大人,你說我怎么就攤上這事桐磁』谠牛” “怎么了?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵我擂,是天一觀的道長衬以。 經(jīng)常有香客問我,道長校摩,這世上最難降的妖魔是什么看峻? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮衙吩,結(jié)果婚禮上互妓,老公的妹妹穿的比我還像新娘。我一直安慰自己坤塞,他們只是感情好冯勉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著摹芙,像睡著了一般灼狰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上浮禾,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天交胚,我揣著相機(jī)與錄音份汗,去河邊找鬼。 笑死蝴簇,一個(gè)胖子當(dāng)著我的面吹牛杯活,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播军熏,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼轩猩,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了荡澎?” 一聲冷哼從身側(cè)響起均践,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎摩幔,沒想到半個(gè)月后彤委,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡或衡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年焦影,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片封断。...
    茶點(diǎn)故事閱讀 38,622評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡斯辰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坡疼,到底是詐尸還是另有隱情彬呻,我是刑警寧澤,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布闸氮,位于F島的核電站教沾,受9級(jí)特大地震影響蒲跨,放射性物質(zhì)發(fā)生泄漏授翻。R本人自食惡果不足惜或悲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望堪唐。 院中可真熱鬧酣栈,春花似錦捶码、人聲如沸杨蛋。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至曙寡,卻和暖如春糠爬,著一層夾襖步出監(jiān)牢的瞬間举庶,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工镀琉, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人屋摔。 一個(gè)月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓替梨,卻偏偏與公主長得像钓试,于是被迫代替她去往敵國和親副瀑。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,490評論 2 348

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