【发布时间】:2019-03-19 05:22:37
【问题描述】:
t1.speak("Hi sir", TextToSpeech.QUEUE_ADD, null);
onStart();
块引用 speak 没有运行,它直接跳到 on Start 方法,但是如果我删除 on start 方法,它就会运行。我想在它完成与先生讲话后转到 on start 方法。
【问题讨论】:
t1.speak("Hi sir", TextToSpeech.QUEUE_ADD, null);
onStart();
块引用 speak 没有运行,它直接跳到 on Start 方法,但是如果我删除 on start 方法,它就会运行。我想在它完成与先生讲话后转到 on start 方法。
【问题讨论】:
speak 方法是异步的,会生成一个新线程,该线程与已经运行的代码同时运行,因此执行不会“暂停”,而是继续到下一行。 p>
您必须让 t1.speak() 成为包含它的任何方法中的最后一条指令,并且在调用 speak 之前,在您的 t1 上设置一个 UtteranceProgressListener... 并像这样覆盖 onDone() 方法:
@Override
public void onDone(String s) { // this method is called from a background thread...
runOnUiThread(new Runnable() { // ... so this is important :)
@Override
public void run() {
onStart(); // <-------- move your onStart here.
}
});
}
这是一个similar answer,您可以使用它来获取有关如何设置 UtteranceProgressListener 的完整详细信息。
【讨论】: