Android EditText性能:了解配置文件GPU渲染的GPU处理时间
我正在研究提高Android EditText性能:了解配置文件GPU渲染的GPU处理时间,android,performance,android-edittext,Android,Performance,Android Edittext,我正在研究提高EditText性能的方法,特别是在加载时间方面。当加载几千字或更多的大型文档时,在我的一些测试设备和模拟器上调用setText可以将UI冻结几秒钟 作为回应,我探索了几种可能的解决方案,但没有一种能产生令人满意的结果。我尝试过按段落分割大型文档,并将每个段落加载到自己的RecyclerView或ListView行中。由于出现了一个问题,RecyclerView完全没有希望了ListView提供了很好的、几乎即时的加载时间和相当好的滚动效果(虽然不如EditTextblock),但
EditText
性能的方法,特别是在加载时间方面。当加载几千字或更多的大型文档时,在我的一些测试设备和模拟器上调用setText
可以将UI冻结几秒钟
作为回应,我探索了几种可能的解决方案,但没有一种能产生令人满意的结果。我尝试过按段落分割大型文档,并将每个段落加载到自己的RecyclerView
或ListView
行中。由于出现了一个问题,RecyclerView完全没有希望了ListView
提供了很好的、几乎即时的加载时间和相当好的滚动效果(虽然不如EditText
block),但存在EditText
在行内阻塞的问题。我还尝试在AsyncTask
中的onProgressUpdate
中更新EditText
部分,希望用户可以在部分加载文本时与文本交互,但加载时间基本上不受影响
我探索过的最有希望的途径是更改AndroidManifest.xml
中的以下元素:
android:hardwareAccelerated="false"
我是在谷歌开发者频道上看了下面这段视频后得出这个想法的。当我打开GPU配置文件渲染时,我发现每次调用setText
时,橙色条(代表“处理时间”)都在快速移动。当我关闭硬件加速时,setText
性能大幅提高,尽管其他方面(如滚动)变得更糟
我想了解的是——为什么会发生这种情况?另外,是否有一种方法可以使用此信息进一步提高性能?我可以简单地通过编程切换硬件加速开关吗
值得一提的是,一些设备,如运行API 22的Nexus 7 2013,在大型文档上调用setText时不会遇到任何问题,而其他设备则在硬件加速方面遇到困难。我只是想更好地了解发生了什么,这样我就可以尝试修复它!谢谢
编辑:
这里是供任何人下载我的一个示例测试应用程序,以复制我上面列出的问题。我还在网站上发布了三个视频,演示了这些问题,我将在下面反映这些问题:
我已经做了三个视频演示,显示这个应用程序在一个计算机上运行
将中的hardwareAccelerated
属性设置为true
AndroidManifest
,然后使用具有相同属性的同一部手机
设置为false
,并启用单独的硬件加速。GPU评测在每种情况下都处于打开状态
您可能希望组合一个演示该现象的小示例应用程序,然后从这里链接到它。@Commonware我添加了一个测试应用程序和一些使用该应用程序的视频,以演示在大文件上调用
settext()
的效果,以及打开和关闭硬件加速的效果。哦,好吧,很明显,您的问题是设备名称中的头韵太多。:-)我会尝试试一试,看看我看到了什么。我无法在运行4.4的HTC One M7或三星Galaxy Note 3(SM-N900)上重现您的问题。两者都在~1秒内加载文本,然后滚动至精细。我最好的猜测是,问题与您的HHH使用的GPU有关,就像Mali-400mp2一样。我没有带GPU的设备,不过我可能会选择一个用于测试目的。@commonware感谢您测试它。知道这个问题有点孤立,至少令人鼓舞。