Android 显示textview settext长文本时性能非常慢
我尝试在Android应用程序中用TextView显示一个长文本(最大约300KB),Nexus7上的性能非常糟糕(大约10秒)。文本是可滚动的,所以我们将其分成更小的部分,并尝试在ListView中显示它们(使用ViewHolder模式)。性能有所提高,但滚动动画仍然非常不稳定。事实上,纯文本的性能是不可接受的(Nexus 7不是最慢的设备),但最终我们将使用样式化文本(使用SpannableString),这将完全破坏性能 我在下面显示了systrace屏幕(实际上是链接,很抱歉,我没有机会上传图片:):Android 显示textview settext长文本时性能非常慢,android,textview,android-ui,systrace,Android,Textview,Android Ui,Systrace,我尝试在Android应用程序中用TextView显示一个长文本(最大约300KB),Nexus7上的性能非常糟糕(大约10秒)。文本是可滚动的,所以我们将其分成更小的部分,并尝试在ListView中显示它们(使用ViewHolder模式)。性能有所提高,但滚动动画仍然非常不稳定。事实上,纯文本的性能是不可接受的(Nexus 7不是最慢的设备),但最终我们将使用样式化文本(使用SpannableString),这将完全破坏性能 我在下面显示了systrace屏幕(实际上是链接,很抱歉,我没有机会
@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()中花费了很多时间。出于好奇,如果禁用硬件加速会发生什么?