Код: Выделить всё
mEngine = new TextToSpeech(mContext, listener, ENGINE_GOOGLE_NAME);
Как я понял, независимо от того, из какого потока вызывается конструктор, прослушиватель запускается из «основного» потока приложения.
Моя идея заключалась в том, чтобы иметь пример функции (упрощенный код — Надеюсь понятно):
Код: Выделить всё
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
}
Знаете ли вы, как мне достичь своей цели в этой ситуации? Может быть, я делаю что-то в корне неправильно?
Подробнее здесь: https://stackoverflow.com/questions/793 ... n-java-and