北京

点击搜索

发布

android内存溢出的解决方法

区域:
北京 > 昌平 > 北七家
1. 当项目中包含大量图片,或者图片过大
  方法1:等比例缩小图片
  复制内容到剪贴板
  代码:
  BitmapFactory.Options options = new BitmapFactory.Options();
  op***SampleSize = 4

  方法2:对图片采用软引用,及时地进行recyle()操作
  复制内容到剪贴板
  代码:
  SoftReference bitmap;
  bitmap = new SoftReference(pBitmap);
  if(bitmap != null){
  if(bitmap.get() != null && !bitmap.get().isRecycled()){
  bitmap.get().recycle();
  bitmap = null;
  }
  }

  方法3 : 对复杂的listview进行合理设计与编码(个人感觉这个靠谱点)1. 注意重用Adapter里面的convertView,以及holder机制的运用上述方法尝试还未成功,可用 lazy loading data
  复制内容到剪贴板
  代码:
  public View getView(int position, View convertView, ViewGroup parent) {
  if (convertView == null) {
  v = mInf***flate(resource, parent, false);
  final int[] to = mTo;
  final int count = to.length;
  final View[] holder = new View[count];
  for (int i = 0; i < count; i++) {
  holder = v.findViewById(to);
  }
  v.setTag(holder); } else {
  }
  }

  方法4 : 单个页面,横竖屏切换N次后 OOM
  1. 看看页面布局当中有没有大的图片,比如背景图之类的。去除xml中相关设置,改在程序中设置背景图(放在onCreate()方法中):
  复制内容到剪贴板
  代码:
  Drawable bg = getResources().getDrawable(R.drawable.bg);
  XXX.setBackgroundDrawable(rlAdDetailone_bg);
  在Activity destory时注意,bg.setCallback(null); 防止Activity得不到及时的释放。

  2. 跟上面方法相似,直接把xml配置文件加载成view 再放到一个容器里,然后直接调用 this.setContentView(View view);避免xml的重复加载。

  方法5:在页面切换时尽可能少地重复使用一些代码。比如:重复调用数据库,反复使用某些对象等等.....

  方法6:Android堆内存也可以自己定义大小和优化Dalvik虚拟机的内存
  复制内容到剪贴板
  代码:
  private final static int CWJ_HEAP_SIZE= 6*1024*1024;
  private final static float TARGET_HEAP_UTILIZATION = 0.75f;
  VMRuntime.getRuntime().setMinimumHeapSize(CWJ_HEAP_SIZE);
  VMRuntime.getRuntime().setTargetHeapUtilization(TARGET_HEAP_UTILIZATION);

  如果你还有什么疑问,欢迎咨询领卓教育的讲师,领卓教育的讲师会一一为您简答。

  在线咨询:武老师Q Q:2997520698   张老师Q Q:1097577690

免责声明:此信息系发布者(UID:341737)自行发布,本站是服务平台,仅提供信息存储空间服务,该信息内容的真实性及合法性由该发布者完全负责。

© lieju.com 联系我们