android - 如何针对大量文本(代码)优化自定义 EditText?

标签 android optimization android-edittext

我正在编写类似于 QuickEdit 的文本编辑器和 Turbo Editor .

但是,当我的 EditText 处理大量代码行时,我遇到了一个问题,它变得更慢且滞后。

来自 this question我发现在我的例子中我应该创建一个自定义的 EditText,然后从 thisthis我建议我应该覆盖其中的 onDraw()onMeasure() 方法,但我不明白如何将其应用于 EditText,而不是 TextView。

阅读源代码也没有给我答案:我没有找到可能提高自定义 EditText 性能的行。

长话短说:我正在寻找一种方法并详细说明如何针对大量代码行(10 000 <)优化 EditText。

最佳答案

TLDR:如果您想在 EditText 中放置大量文本,请制作一个继承自基础 EditText 的自定义 View ,并且不要使用AppCompatEditText!


这是一个很老的问题,但我自己最近也有类似的要求(即有一个包含大量文本的 EditText),并且偶然发现了解决方案。

罪魁祸首是 androidx.appcompat 库,它提供了诸如 AppCompatEditText 之类的东西,它是 EditText 平台类的包装器,并且提供某些兼容性垫片以及其他“功能”和便利。

正是 AppCompat 添加的这些其他“功能”有效地削弱了 EditText 的性能。如果您创建自己的继承自 EditText 而不是 AppCompatEditText 的自定义 View ,您会发现性能有了巨大的提高。

您可能想查看 AppCompatEditText 的源代码,并挑选您想要迁移到自定义 View 中的任何兼容性添加,但您很可能不需要所有这些。


顺便说一句,您提到的应用程序(例如 Turbo Editor)具有快速性能,因为它们使用的是较旧版本的 AppCompat,该版本没有最新版本那么多的新“功能”。

关于android - 如何针对大量文本(代码)优化自定义 EditText?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48808894/

相关文章:

Android - 处理屏幕方向变化的对话框

c++ - 将值作为函数参数传递还是计算两次?

java - 优化一个简单的搜索算法

Mysql子查询优化

android - EditText 自定义光标错误地绘制在第一行

android - app暂停一段时间后FragmentActivity丢失

android - 使用新的 Parse 1.7 Android API 的 IllegalStateException

具有不规则 X 轴值的 Android Graph

Android:在 EditText 中插入位图

Android EditText 在最大长度时自动聚焦到下一个 EditText