当我使用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);
}
}
});
} 发布于 2012-08-21 23:48:46
如果其他人看到这个问题,我认为问题实际上出在使用OnUtteranceCompletedListener的而不是的情况下。如果你不使用它,你就永远不会调用tts.shutdown(),这意味着TextToSpeech资源永远不会释放,这会导致安卓在你的Activity结束时发出抱怨(因为它看到你没有清理好自己的东西)。
https://stackoverflow.com/questions/6979674
复制相似问题