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);     

      } 
     } 
    });  
} 
+0

你是什么意思的“开始消失的记忆”?你是如何观察的?你用什么工具来跟踪? – ef2011

如果任何人看到这个问题,我觉得这个问题实际上是在情况下,当你使用OnUtteranceCompletedListener。如果你不使用它,你永远不会拨打tts.shutdown(),这意味着TextToSpeech资源永远不会被释放,这会导致Android在您的Activity结束时(因为它看到您没有自行清理)而抱怨。