Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android EditText性能:了解配置文件GPU渲染的GPU处理时间_Android_Performance_Android Edittext - Fatal编程技术网

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感谢您测试它。知道这个问题有点孤立,至少令人鼓舞。