Android - 中途停止代码?

时间:2015-06-21 05:33:37

标签: java android multithreading text-to-speech

我正在使用TextToSpeech服务。这就是我的代码:

Speak("Test1");
Speak("Test2");
Speak("Test3");
Speak("Test4");
Speak("Test5");
//
public void Speak(String t)
{
if(enabled)
tts.speak(t);
}

在5条消息(test1-> test5)之间,有可能将布尔“启用”更改为false。但是,如果代码已启动,然后布尔值更改为false,则所有5条消息都会通过。我认为这是因为所有5个“Speaks”几乎立即被“发送”,比更改的布尔值更快。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

取决于启用的字段声明。你有没有声明它是静态的?我猜你可能没有将它声明为静态,启用将进入对象的范围而不是类。此外,如果您使用多线程,请使用volatile来启用

PS:这应该是一个评论,但我没有足够的声誉来评论这个问题。