TextToSpeech onUtterance完成的bug
问题描述:
当我使用Android TextToSpeech
并使用OnUtteranceCompletedListener()
我遇到内存问题。 如果你不使用OnUtteranceCompletedListener()
那么一切都很好。TextToSpeech onUtterance完成的bug
为什么?
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);
}
}
});
}
答
如果任何人看到这个问题,我觉得这个问题实际上是在情况下,当你使用OnUtteranceCompletedListener
是不。如果你不使用它,你永远不会拨打tts.shutdown()
,这意味着TextToSpeech
资源永远不会被释放,这会导致Android在您的Activity
结束时(因为它看到您没有自行清理)而抱怨。
你是什么意思的“开始消失的记忆”?你是如何观察的?你用什么工具来跟踪? – ef2011