我有一個活動,不斷閱讀單詞給用戶,並使用onUtteranceComplete與textTospeech來顯示代碼完成時的東西。Android:runOnUiThread並不總是選擇正確的線程?
裏面onUtteranceCompleted我有這樣的代碼來延遲功能與第二:
Runnable task = new Runnable() {
public void run() {
//runs on ui
runOnUiThread(new Runnable() {
public void run() {
readWord();
}
});
}
};
worker.schedule(task, 1, TimeUnit.SECONDS);
這似乎是它工作得很好,但我認爲這是造成問題。 當我旋轉我的手機屏幕(我猜這開始一個新的活動)。 我聽到一些字在背景中被讀取。我想這是因爲runOnUiThread()
這使得活動在後臺繼續。
我該如何避免2個活動運行?我寧願如果我不必停止旋轉屏幕做一些奇怪的補丁!
謝謝
編輯:
public void readWord() {
if (this.readingOnPause) {
return;
}
txtCurrentWord.setText(currentItem[1]);
this.hashAudio.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID,"word");
this.tts.setLanguage(Locale.US);
this.tts.speak(this.currentItem[1], TextToSpeech.QUEUE_FLUSH,this.hashAudio);
}
EDIT2:
工人的實例:
private static final ScheduledExecutorService worker = Executors.newSingleThreadScheduledExecutor();
顯示您readWord()函數.. – L7ColWinters 2012-02-25 21:46:05
工人是一個java.util.Timer嗎? – 2012-02-25 21:51:00
工作是這樣實例化的:private static final ScheduledExecutorService worker = Executors \t \t \t .newSingleThreadScheduledExecutor(); – xtrimsky 2012-02-25 22:01:54