当我使用Android TextToSpeech
时
并使用OnUtteranceCompletedListener()
我有记忆问题。
如果您不使用OnUtteranceCompletedListener()
一切都很好。
为什么?
final Runnable finish = new Runnable()
{
public void run()
{
Intent intent = new Intent();
intent.setClass(main.this, main.class);
startActivity(intent);
}
};
public void SAY_TTS()
{
final HashMap<String, String> ttsParams = new HashMap<String, String>();
ttsParams.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, "done");
tts = new TextToSpeech(this, new OnInitListener() {
public void onInit(int status)
{
if (status == TextToSpeech.SUCCESS)
{
tts.setLanguage(Locale.ENGLISH);
tts.setOnUtteranceCompletedListener(new OnUtteranceCompletedListener() {
public void onUtteranceCompleted(String uttID)
{
tts.stop();
tts.shutdown();
handler_finish.post(finish);
}
});
tts.speak("this is a test", TextToSpeech.QUEUE_ADD, ttsParams);
}
}
});
}
答案 0 :(得分:0)
如果有其他人看到此问题,我认为当您使用OnUtteranceCompletedListener
不时,实际情况就会出现问题。如果您不使用它,则永远不会调用tts.shutdown()
,这意味着TextToSpeech
资源永远不会被释放,这会导致Android在Activity
结束时投诉(因为它看到了你自己没有清理过。)