您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

android内存溢出的解决方法

2017/5/6 12:28:55发布282次查看ip:101.229.231.41发布人:111

   1. 当项目中包含大量图片,或者图片过大
    方法1:等比例缩小图片
    复制内容到剪贴板
    代码:
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 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 = mInflater.inflate(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[i] = v.findViewById(to[i]);
    }
    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);
 
    如果你还有什么疑问,欢迎咨询领卓教育的讲师,领卓教育的讲师会一一为您简答。
    在线咨询:武老师QQ:2997520698    张老师QQ:1097577690
 
 
扫二维码,每天为您挖掘互联网行业中的头条!
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product