Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何有效地更新Android文本视图?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一款遇到性能问题的 Android应用.
我的目标是从AsyncTask接收字符串并在TextView中显示它们. TextView最初是空的,每次其他进程发送字符串时,它都会将其连接到textview的当前内容.
我目前使用StringBuilder存储主字符串,每次收到一个新字符串时,我将它附加到StringBuilder并调用

myTextView.setText(myStringBuilder.toString())

问题是后台进程每秒最多可以发送100个字符串,而且我的方法效率不高.

每次重绘整个TextView显然是一个坏主意(时间复杂度O(N²)),但我没有看到另一个解决方案……

你知道TextView的替代方法可以在O(N)中进行这些连接吗?

解决方法

只要字符串之间有换行符,就可以使用ListView追加字符串并将字符串本身保存在您附加到的ArrayList或LinkedList中,因为AsyncTask会接收字符串.

您可能还会虑简单地使TextField无效;说一遍10次.这肯定会提高响应能力.像下面这样的东西可以工作:

static long lastTimeupdated = 0;
if( receivedString.size() > 0 )
{
   myStringBuilder.append( receivedString );
}
if( (System.currentTimeMillis() - lastTimeupdated) > 100 )
{
    myTextView.setText( myStringBuilder.getChars( 0,myStringBuilder.length() );
}

如果字符串突发 – 这样你的突发之间的延迟大于,比如一秒钟 – 那么每次更新都会重置一个定时器,这将触发该代码再次运行以获取最后一次突发的尾部.

大佬总结

以上是大佬教程为你收集整理的如何有效地更新Android文本视图?全部内容,希望文章能够帮你解决如何有效地更新Android文本视图?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。