Code: Select all
mEngine = new TextToSpeech(mContext, listener, ENGINE_GOOGLE_NAME);
Wie ich erfahren habe, wird der Listener unabhängig von dem Thread, aus dem der Konstruktor aufgerufen wird, vom Thread der „Hauptanwendung“ ausgelöst.
Meine Idee war, eine Beispielfunktion zu haben (vereinfachter Code - Ich hoffe es ist verständlich):
Code: Select all
private TextToSpeech mEngine;
CountDownLatch cdl = new CountDownLatch(1);
ExecutorService executorService = Executors.newSingleThreadExecutor();
public void initializeBlocking() {
executorService.execute(() -> { // new thread
mEngine = new TextToSpeech(mContext, status -> {
cdl.countDown(); // callback body (executes in "main" thread)
}, ENGINE_GOOGLE_NAME);
});
cdl.await(); // main thread
}
Haben Sie eine Idee, wie ich in dieser Situation mein Ziel erreichen kann? Vielleicht mache ich etwas grundsätzlich falsch?