Android 显示textview settext长文本时性能非常慢

Android 显示textview settext长文本时性能非常慢,android,textview,android-ui,systrace,Android,Textview,Android Ui,Systrace,我尝试在Android应用程序中用TextView显示一个长文本(最大约300KB),Nexus7上的性能非常糟糕(大约10秒)。文本是可滚动的,所以我们将其分成更小的部分,并尝试在ListView中显示它们(使用ViewHolder模式)。性能有所提高,但滚动动画仍然非常不稳定。事实上,纯文本的性能是不可接受的(Nexus 7不是最慢的设备),但最终我们将使用样式化文本(使用SpannableString),这将完全破坏性能 我在下面显示了systrace屏幕(实际上是链接,很抱歉,我没有机会

我尝试在Android应用程序中用TextView显示一个长文本(最大约300KB),Nexus7上的性能非常糟糕(大约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;
}

你能发布你的代码吗?私有类ViewHolder扩展ViewHolder{}这是怎么可能的?对不起,这是为这个问题清理代码后的一个打字错误,更正OK。我没有试过你的代码,因为我没有那么长的文本。您的“将其划分为更小的部分”的想法很好,但不要使用listview实现它,而是根据您的片段TextView使用创建根ScrollView。只是一个建议。它似乎在getDisplayList()中花费了很多时间。出于好奇,如果禁用硬件加速会发生什么?