2011-08-08 5 views
1

TextToSpeech 을 사용하고 OnUtteranceCompletedListener() 을 사용할 때 메모리 문제가 있습니다. OnUtteranceCompletedListener() 을 사용하지 않으면 모든 문제가 해결됩니다.TextToSpeech onUterteranceCompleted 버그

왜? 다른 사람이이 문제를 보는 경우

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

답변

0

, 난 당신이 OnUtteranceCompletedListener를 사용 하지을있을 때 문제가 경우에 실제로 생각합니다. 사용하지 않으면 결코 tts.shutdown()으로 전화 할 필요가 없습니다. 즉 리소스가 공개되지 않습니다. Activity이 종료되면 Android가 불만을 제기하게됩니다 (사용자가 직접 정리하지 않았 음을 알기 때문에).