PPa*_*san 5 performance android android-edittext
我正在研究提高性能的方法EditText,特别是在加载时间方面.当加载几千字或更多字的大型文档时,调用setText可以在我的一些测试设备和模拟器上冻结UI几秒钟.
作为回应,我已经探索了几种可能的解决方案,但都没有产生令人满意的结果.我试图按段落拆分大型文档,并将每个段落加载到自己的行RecyclerView或ListView行中.由于导致滚动不稳定的问题,RecyclerView完全没有希望.ListView提供了很好的,几乎是即时的加载时间,以及非常好的滚动(虽然不如一个EditText块好),但是存在一个问题,即EditText行内的块在选中时会失去焦点.我也试图更新EditText从部分onProgressUpdate在AsyncTask,希望用户可以用文字,因为它加载的部分进行交互,但加载时间基本上不受影响.
我探索过的最有希望的途径涉及改变以下元素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设置属性true的AndroidManifest,然后用相同的手机设置为相同的属性false,以及一个独立的Nexus 7(2013)运行Lollipop 5.1启用了硬件加速功能.GPU分析在每种情况下都会启用.
| 归档时间: |
|
| 查看次数: |
718 次 |
| 最近记录: |