星空网 > 软件开发 > 操作系统

[android] 手机卫士黑名单功能(ListView优化)

上一篇记录了使用ListView展示出来了100条数据,当慢慢拖动的时候,不会有问题,但是当拖动很快的时候,应用会报anr错误

查看错误日志,看到报OutOfMemoryError,内存不足

 

ListView在显示条目的时候,每显示出来一条都会调用一下getView()方法

 

这个方法里面将文件转成View对象非常的消耗资源,要避免频繁调用:

在重写的getView()方法中,会传递进来一个View对象convertView

当手向上拖动ListView的时候,上面隐藏出去一条的条目会保存在convertView对象中,这个convertView对象可以作为转换成的目标View对象

此时,创建新的View对象,只会在第一次屏幕展示的时候创建,之后的条目显示,都是使用的之前缓存的View对象

 

下面调用View对象的findViewById()方法,也非常消耗内存:

android布局中,是个典型的树结构,在查找控件的时候,需要遍历整个的结构,有可能非常消耗时间

定义一个内部类ViewHolder

定义属性根据业务

在getView()方法中,获取ViewHolder对象

赋值ViewHolder对象的属性,findViewById()查找到的View控件对象

当转换成的View对象创建的时候,调用View对象的setTag()方法,参数:VIewHolder对象

使用View对象的getTag()方法,获取出ViewHolder对象使用

  class ViewHolder{    public TextView phoneView;    public TextView modeView;  }  private class MyAdapter extends BaseAdapter {    @Override    public int getCount() {      // TODO Auto-generated method stub      return infos.size();    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {      View view;      ViewHolder holder=new ViewHolder();      if(convertView==null){        view = View.inflate(CallSmsSafeActivity.this,            R.layout.list_call_sms_safe_item, null);        holder.phoneView=(TextView) view            .findViewById(R.id.tv_main_phone);        holder.modeView=(TextView) view            .findViewById(R.id.tv_block_mode);        view.setTag(holder);        System.out.println("创建新的View对象"+position);      }else{        view=convertView;        holder=(ViewHolder) view.getTag();        System.out.println("使用历史View对象"+position);      }                  holder.phoneView.setText(infos.get(position).get("phone"));      switch (infos.get(position).get("mode")) {      case "1":        holder.modeView.setText("电话拦截");        break;      case "2":        holder.modeView.setText("短信拦截");        break;      case "3":        holder.modeView.setText("全部拦截");        break;      default:        break;      }            return view;    }

[android] 手机卫士黑名单功能(ListView优化)images/loading.gif' data-original="http://images2015.cnblogs.com/blog/726254/201605/726254-20160512223840905-135381866.jpg" />

 




原标题:[android] 手机卫士黑名单功能(ListView优化)

关键词:Android

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

跨境物流的渠道:https://www.goluckyvip.com/tag/92675.html
跨境物流有那些:https://www.goluckyvip.com/tag/92676.html
跨境物流带电和不带电:https://www.goluckyvip.com/tag/92677.html
拼箱哥跨境物流:https://www.goluckyvip.com/tag/92678.html
跨境物流供应链10强:https://www.goluckyvip.com/tag/92679.html
德迅跨境物流:https://www.goluckyvip.com/tag/92680.html
长治婚庆女司仪和主持人:https://www.vstour.cn/a/366176.html
北京丰台区水上乐园哪家好玩?:https://www.vstour.cn/a/366177.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流