EditText性能:了解配置文件GPU渲染上的GPU处理时间

PPa*_*san 5 performance android android-edittext

我正在研究提高性能的方法EditText,特别是在加载时间方面.当加载几千字或更多字的大型文档时,调用setText可以在我的一些测试设备和模拟器上冻结UI几秒钟.

作为回应,我已经探索了几种可能的解决方案,但都没有产生令人满意的结果.我试图按段落拆分大型文档,并将每个段落加载到自己的行RecyclerViewListView行中.由于导致滚动不稳定的问题,RecyclerView完全没有希望.ListView提供了很好的,几乎是即时的加载时间,以及非常好的滚动(虽然不如一个EditText块好),但是存在一个问题,即EditText行内的块在选中时会失去焦点.我也试图更新EditText从部分onProgressUpdateAsyncTask,希望用户可以用文字,因为它加载的部分进行交互,但加载时间基本上不受影响.

我探索过的最有希望的途径涉及改变以下元素AndroidManifest.xml:

    android:hardwareAccelerated="false"
Run Code Online (Sandbox Code Playgroud)

我在Google开发者频道上观看此YouTube视频片段中的以下片段后得到了这个想法.当我打开GPU Profile渲染时,我发现橙色条(代表"处理时间")每次都setText被调用.当我关闭硬件加速时,setText性能大幅提升,尽管其他领域(如滚动)变得更糟.

我想了解的是 - 为什么会发生这种情况?另外,有没有办法可以使用这些信息来进一步提高性能?我可以简单地以编程方式关闭和打开硬件加速吗?

值得一提的是,一些设备,如运行API 22的Nexus 7,在大型文档上调用setText时不会遇到任何问题,而其他设备真的很难加速硬件加速.我只想了解更好的情况,以便我可以尝试解决它!谢谢.

编辑:

这是一个GitHub存储库的链接,供任何人下载我的一个示例测试应用程序以复制我上面列出的问题.我还在网站上发布了三个视频,展示了这些问题,我将在下面进行讨论:

我做了三个视频演示,显示上运行这个程序, 华为Honor运行冬青4.4.2奇巧hardwareAccelerated设置属性trueAndroidManifest,然后用相同的手机设置为相同的属性false,以及一个独立的Nexus 7(2013)运行Lollipop 5.1启用了硬件加速功能.GPU分析在每种情况下都会启用.

荣誉霍莉 - 加速

Honor Holly - 加速关闭

Nexus 7(2013) - 加速开启