使用长文本显示textview settext非常慢的性能

时间:2014-11-03 16:30:03

标签: android textview android-ui systrace

我尝试在Android应用中使用TextView显示长文本(最大约300 KB),并且在Nexus 7上的性能非常糟糕(大约10秒左右)。文本是可滚动的,因此我们将其分成更小的部分并尝试在ListView中显示它们(使用ViewHolder模式)。性能上升,但滚动动画仍非常不稳定。实际上,纯文本的表现是不可接受的(Nexus 7不是最慢的设备),但最后我们将使用样式文本(使用SpannableString),这将完全扼杀性能。

我在下面显示systrace屏幕(链接实际上,对不起,但我没有上传图片的反应:)):

我知道文本渲染是非常重要的任务,但iOS处理完美,所以为什么Android不能?这个问题有没有合理的解决方案?

启用硬件加速。

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    ViewHolder holder = null;
    if (convertView == null) {
        holder = new ViewHolder();
        convertView = mInflater.inflate(R.layout.element_item_layout, parent, false);
        //element_item_layout file is/contains only one TextView, as below
        holder.textView = (TextView) convertView.findViewById(R.id.element_item_textview);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder)convertView.getTag();
    }

    holder.textView.setText(getItem(position).longText);

    return convertView;
}

private class ViewHolder {
    public TextView textView;
}

0 个答案:

没有答案