当前位置: 首页 > 知识库问答 >
问题:

如何为大量文本(代码)优化自定义EditText?

劳彦
2023-03-14

我正在编写一个类似于QuickEdit和Turbo editor的文本编辑器。

然而,我面临的问题是,当我的EditText处理大量代码行时,它会变得更慢和滞后。

根据这个问题,我发现在我的情况下,我应该创建一个自定义的EditText,然后根据这个和这个,我建议我应该覆盖其中的onDraw()onMeasure()方法,但我不知道如何将其应用于EditText而不是TextView。

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

长话短说:我正在寻找一种方法,并详细解释如何为大量代码行(10000)优化EditText

共有1个答案

薛烨
2023-03-14

TLDR:如果您想在EditText中放置大量文本,请创建一个从基本EditText继承的自定义视图,并且不要使用AppCompatEditText

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

罪魁祸首是androidx.appcompat库,它提供了像AppCompatEditText这样的东西,它是围绕EditText平台类的包装器,并提供了一定的兼容性垫片以及其他“特性”和便利。

AppCompat添加的这些其他“功能”有效地削弱了EditText的性能。如果您创建了自己的自定义视图,该视图继承自EditText而不是AppCompatEditText,那么您将注意到性能的巨大改进。

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

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

 类似资料:
  • 问题内容: 我已经编写了一个应用程序,但是由于某种原因,它一直保持在100%的峰值。我在几个类上运行了一个概要文件r,并且有报告显示isReset()和isRunning()似乎被多次调用。你有什么不对的地方请通知我。谢谢 第1类是唯一使用isReset()代码的类,因此我希望这可以帮助您检测错误 1类 2级 问题答案: 问题似乎并不在于常用的方法,而是 您调用它们的频率,这似乎就是它们出现如此

  • 我认为代码(如下)已经优化(只需使用比相同逻辑的初始版本更少的变量) > 在优化过程中,我应该考虑哪些因素? 这是代码(也在jsfiddle上) 这是代码的解释。“处理”函数在数组中查找相同的值,对于每个相同的值,它通过将一个数字挂起到该值来更改值,“数字”表示它在数组中找到的值的计数。 例如arr=["x","x","y","z"]将返回["x(1)","x(2)","y","z"]"y"和"z

  • 如何将两个方法合并成一个方法 如图parentValues = ['BC', 'BC-SRV', 'BC-SRV-COM'], 想得到的是选中的树组arrSelectedFacets = ['BC-SRV-COM-FTP', 'BC-SRV-COM-TEL'] 如果 BC-SRV-COM 下的子节点都选中,则arrSelectedFacets=['BC-SRV-COM']

  • Donald Knuth "过早的优化是一切罪恶的根源" 本章处理用策略让Python代码跑得更快。 先决条件 line_profiler gprof2dot 来自dot实用程序 2.4.1 优化工作流 让它工作起来:用简单清晰的方式来写代码。 让它可靠的工作:写自动的测试案例,以便真正确保你的算法是正确的,并且如果你破坏它,测试会捕捉到。 通过剖析简单的使用案例找到瓶颈,并且加速这些瓶颈,寻找更

  • MIP 的事件机制和数据驱动机制基本已经满足了大部分的交互需求,但在一些复杂的需求下面,单单依靠简单的 MIP 表达式无法进行更为复杂的计算,因此引入 mip-script 组件来扩充 MIP 表达式的计算能力。 提示: 本篇仅简要介绍了 mip-script 与 mip-data,有关 mip-script 的详细用法、属性说明等内容,请查看 mip-script 的组件说明。 mip-scri

  • 本文向大家介绍jQuery CSS3自定义美化Checkbox实现代码,包括了jQuery CSS3自定义美化Checkbox实现代码的使用技巧和注意事项,需要的朋友参考一下 效果图: 是不是比默认的好看多了,个人的审美观应该还是可以的。 接下来我们一起来看看实现这款美化版Checkbox的源代码,主要思路是利用隐藏原来的checkbox和radiobox,用一个div来模拟checkbox/ra