如何有效地更新Android文本视图?

如何有效地更新Android文本视图?,第1张

概述我正在开发一款遇到性能问题的 Android应用. 我的目标是从AsyncTask接收字符串并在TextView中显示它们. TextView最初是空的,每次其他进程发送字符串时,它都会将其连接到textview的当前内容. 我目前使用StringBuilder存储主字符串,每次收到一个新字符串时,我将它附加到StringBuilder并调用 myTextView.setText(myString 我正在开发一款遇到性能问题的 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文本视图?所遇到的程序开发问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1128922.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存