在应用程序类中使用TextToSpeech对象会产生什么后果?

时间:2017-05-31 08:28:03

标签: android android-service android-context google-text-to-speech

我目前在所有活动中使用文本到语音,每个活动都有一个TextToSpeech对象(创建活动时创建,活动销毁时关闭)。

使用谷歌的语音合成引擎,第一次加载非常缓慢(10-15s),但随着次要活动它是瞬间的,可能是因为TTS引擎已经初始化,我没有'我知道。问题是,当我打开一个活动并清除活动堆栈(使用intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);)时,TTS初始化再次变慢(可能是因为清除堆栈会破坏所有TTS对象并释放引擎)。

因此,我想出了在我的自定义TextToSpeech课程中移动Application实例,并将其设为静态"单身&#34 ;,这将使用初始化的第一个活动的上下文。然后它将被共享并用于我的所有活动。

我看到两个问题:首先,除非应用程序进程被杀死,否则TTS引擎永远不会被销毁(我猜?)。其次,我被告知永远不要对Context提出静态引用,我明白为什么。但是,例如,Acapela TTS SDK只能使用上下文实例化一次(如果您尝试在多个活动中创建多个TTS对象,之前的那些将不再起作用),因此必须在活动之间共享。 Android TTS可能相同吗?

那我该怎么办?在我的TextToSpeech课程中放置静态Application是否安全?或者我应该去berzerk并使用TTS实例创建一个粘性服务吗?

0 个答案:

没有答案