`
ycljf86
  • 浏览: 74096 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

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

 
阅读更多
这里有两个页面  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后的结果



  • 大小: 50.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics