程序一开始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后的结果