私はユーザーに単語を読ませ続けるアクティビティを持っていて、コードが完了したら何かを表示するためにonTturnanceCompleted with textTospeechを使っています。Android:runOnUiThreadは常に正しいスレッドを選択するとは限りませんか?
インサイドonUtteranceCompleted私は2番目と機能を遅らせるために、このコードを持っている:それはうまく機能のよう
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つのアクティビティを実行しないようにするにはどうすればよいですか?私は奇妙なパッチをすると画面が回転するのを止める必要がないのが好きです!
はありがとうEDIT:
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
労働者java.util.Timerの権利ですか? –
は次のようにインスタンス化されます。private static final ScheduledExecutorService worker = Executors \t \t \t .newSingleThreadScheduledExecutor(); – xtrimsky