看看背景图如何吃掉你的内存的

这里有两个页面 loading login, 两个页面都用了 1920*1080的图片,还是 32bit的。
程序一开始loading 页面 就吃掉了30m, 后来跳到login,又吃掉了30m,然后。我去掉了
loading的背景图,立马内存变成了39m了。可以想象一个这么大的图片 吃掉了 30m的内存
多么的恐怖

解决方案
不要在xml里面加背景图片, 用代码来加,并且回收

private void initBg(){
Bitmap bm = BitmapFactory.decodeResource(this.getResources(), R.drawable.bg_reg);
BitmapDrawable bd = new BitmapDrawable(this.getResources(), bm);
bg_ll.setBackgroundDrawable(bd);
}


@Override
protected void onDestroy() {
if(bg_ll!=null){
BitmapDrawable bd = (BitmapDrawable)bg_ll.getBackground();
bg_ll.setBackgroundResource(0);//别忘了把背景设为null,避免onDraw刷新背景时候出现used a recycled bitmap错误
if(bd!=null){
bd.setCallback(null);
bd.getBitmap().recycle();
}
}
System.gc();//不gc 系统不会立刻释放背景图片内存
super.onDestroy();

}




看看 我改了代码后 在 ondestory gc后的结果


[img]http://dl2.iteye.com/upload/attachment/0120/0615/5f8f3561-7062-397c-b01d-6a80fbea9f23.png[/img]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值