Android:当与FLAG一起使用相同的活动实例时,TTS引擎被销毁:来自广播接收器的FLAG_ACTIVITY_CLEAR_TOP

时间:2013-09-28 16:21:06

标签: android android-intent

我正在尝试将TTS引擎与广播引擎一起使用。

我的活动是A,广播接收者是B。我在有新消息时启用活动A,当有其他消息时,我会使用“A”从B再次呼叫开始活动Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP,因为我正在清除顶级实例,即使旧的A被销毁并且新的A被创建,TTS引擎也会与旧的A一起被销毁。请帮忙

public class SMSPopup extends Activity implements OnClickListener,
TextToSpeech.OnInitListener {

String smsMessageId = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ...
    displayPopupSMS();
    mTts = new TextToSpeech(this, this);
}

@Override
public void onInit(int status) {
    if (status == TextToSpeech.SUCCESS) {
        int result = mTts.setLanguage(Locale.US);
        if (result == TextToSpeech.LANG_MISSING_DATA
                || result == TextToSpeech.LANG_NOT_SUPPORTED) {
            return;
        }
        if (!readMessageText.contains("null")) {
            Log.i("SMS Message", "Call from init" + readMessageText);
            readSMS();
        }
    }
}

private void readSMS() {
    mTts.speak(readMessageText, TextToSpeech.QUEUE_FLUSH, null);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    if(mTts!=null){
        mTts.shutdown();
    }
}

}

如果我没有关闭onDestroy()功能中的TTS,则会泄漏TTS服务。

0 个答案:

没有答案