我正在使用jazzylistview和一个视图持有方法。当我滚动列表视图时,我注意到分配的内存越来越多。它不是很多,但在我滚动的时候,内存增加了。我已经尝试从列表视图和字体中删除图像。我在android api 22上运行。下面是列表视图的视图持有者方法:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView==null) {
face = Typeface.createFromAsset(context.getAssets(), "font/Roboto-Regular.ttf");
face1 = Typeface.createFromAsset(context.getAssets(), "font/Roboto-Thin.ttf");
convertView = View.inflate(context, R.layout.rss_item, null);
holder = new ViewHolder();
holder.itemTitle = (TextView) convertView.findViewById(R.id.textView);
holder.itemTitle1 = (TextView) convertView.findViewById(R.id.textView1);
holder.image = (ImageView) convertView.findViewById(R.id.icon);
holder.itemTitle.setTypeface(face);
holder.itemTitle1.setTypeface(face1);
convertView.setTag(holder);
} else {
holder= (ViewHolder) convertView.getTag();
}
EventItem item = itemList.get(position);
holder.itemTitle.setText(item.getTitle());
holder.itemTitle1.setText(item.getDate());
if (item.getIcon() != 1) {
holder.image.setImageResource(item.getIcon());
}
return convertView;
}
static class ViewHolder {
TextView itemTitle;
TextView itemTitle1;
ImageView image;
}发布于 2015-11-21 01:24:32
代码中的Typeface.createFromAsset部分可能会非常繁重。我建议在适配器的构造函数中读取这两种字体,并使用两个全局变量来设置自定义TypeFace。
除此之外,轻微的内存增加可能是正常的,特别是因为新位置的视图可能需要膨胀并创建新对象。Android可以决定给你的应用程序分配多少内存,当你达到一定的“限制”时,它会开始转储其中的一些内存。
您可能遇到的唯一真正的问题是,当内存不断被分配,但垃圾收集器无法开始执行其任务并释放内存时。基本上,如果你看到你的图表增长了,然后又回到了一定的水平,你就很好。
此外,如果分配的总内存仍然很高,您的应用程序中的其他地方可能会出现问题。
https://stackoverflow.com/questions/33832479
复制相似问题