首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在TextToSpeech的ui线程中性能不佳

在TextToSpeech的ui线程中性能不佳
EN

Stack Overflow用户
提问于 2015-12-17 21:29:53
回答 2查看 654关注 0票数 0

我的应用程序同时录制视频和使用TextToSpeech->android.speech.tts.TextToSpeech.()。

如果我在像4处理器这样的高设备上运行1.5 ghz,工作正常。但是如果我在两个进程中使用1.1GHz设备ui线程的速度非常慢,冻结时间为2-6秒。

我知道TextToSpeech中存在这个问题,因为如果我不使用它并录制视频,ui线程在低设备上工作非常流畅。如果我使用TextToSpeech +记录视频用户界面线程不工作,而且声音冻结1-2 seg。

有什么方法可以提高TextToSpeech.speak()的性能吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-17 21:34:09

你同时用文字进行语音和录像记录?你很惊讶它进展缓慢吗?这两者都占用了大量的CPU资源。有些东西只需要处理能力。尽量不要同时使用它们,你会得到更好的结果。

如果您需要同时使用它们--首先尝试使用synthesizeToFile将声音剪辑写入文件,然后在录制时播放声音剪辑。这样你就不会在录音的同时产生音素了。

票数 1
EN

Stack Overflow用户

发布于 2015-12-17 21:49:56

当你说“处理器”时,你指的是“核心”吗?看起来,您正在执行的活动应该运行在3个不同的线程上。

主线程应该始终是免费的。尽量别让它陷进去..。永远不会!

扩展AsyncTask类。AsyncTask将允许您在不阻塞主线程的情况下做一些需要很长时间的事情。

因为这都是在虚拟机上运行的(准确地说,是Dalvik),所以我们必须假设线程也是虚拟的。这意味着,如果在两个核心上运行3个线程,虚拟机将决定哪些线程获得处理器周期,有时这意味着共享核心。

我想说的是,如果您只计划一次做两件重物,对于一个低端设备,您可以使用视频的主线程和TextToSpeech的第二个线程来实现这一点。这并不理想,因为它可能阻塞主线程。但是由于视频是两者中最流畅的,所以它将是在主UI线程上运行的首选选择。

理想情况下,您需要至少三个线程,让主UI线程基本不受阻塞。您可以轮询两个线程的结果以检测完成情况。

如果您碰巧有4个内核,那么创建三个线程可能比可用的内核具有更多的分布式性能。

一些让你开始工作的文档:Android多线程-一篇高通文章,和安卓: AsyncTask

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34344584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档