我正在编写一个类似于QuickEdit和Turbo editor的文本编辑器。
然而,我面临的问题是,当我的EditText处理大量代码行时,它会变得更慢和滞后。
根据这个问题,我发现在我的情况下,我应该创建一个自定义的EditText,然后根据这个和这个,我建议我应该覆盖其中的onDraw()
和onMeasure()
方法,但我不知道如何将其应用于EditText而不是TextView。
阅读源代码也没有给我答案:我没有找到可能提高自定义EditText性能的行。
长话短说:我正在寻找一种方法,并详细解释如何为大量代码行(10000)优化EditText
TLDR:如果您想在EditText
中放置大量文本,请创建一个从基本EditText
继承的自定义视图,并且不要使用AppCompatEditText
!
这是一个很老的问题,但我最近自己也有一个类似的要求(即拥有一个包含大量文本的EditText
),并偶然找到了解决方案。
罪魁祸首是androidx.appcompat
库,它提供了像AppCompatEditText
这样的东西,它是围绕EditText
平台类的包装器,并提供了一定的兼容性垫片以及其他“特性”和便利。
AppCompat添加的这些其他“功能”有效地削弱了EditText的性能。如果您创建了自己的自定义视图,该视图继承自EditText
而不是AppCompatEditText
,那么您将注意到性能的巨大改进。
您可能希望查看AppCompatEditText
的源代码,并选择要迁移到自定义视图中的任何兼容性添加,但很可能您并不需要所有这些添加。
顺便说一句,你提到的应用程序(例如Turbo Editor)性能很快,因为它们使用的AppCompat版本要旧得多,没有最新版本那么多新“功能”。