我正在编写一项与用户交互的活动,我真的很想在TextToSpeech初始化时阻止它 - 否则就超时了。 我该如何让我的线程等待?
我尝试过:
while (! mIsTtsReady || i>limit) try { Thread.sleep(100); i++; ... };
随着:
@Override
public void OnInit() { mIsTtsReady = true; } // TextToSpeech.OnInitListener
但OnInit()从未运行。看来OnInit是在我的线程中执行的(通过向我的活动Looper发送消息?),而该线程处于一个紧密的sleep()循环中。
把我的代码大部分("初始化后"的代码)放在OnInit中似乎是错误的。 将其移入Runnable中,然后start()它,并在其中进行上述睡眠将起作用。但现在我的代码在一个新线程中,需要与UI等显式同步,所有这一切变得非常混乱。
什么是正确的方法-或者至少是可行的方法:)-来做到这一点?
谢谢!