Вызов функции обертывания с его обратным вызовом в одной функции блокировки в Java (спецификация Android)Android

Форум для тех, кто программирует под Android
Ответить Пред. темаСлед. тема
Anonymous
 Вызов функции обертывания с его обратным вызовом в одной функции блокировки в Java (спецификация Android)

Сообщение Anonymous »

В системе Android существует API TextTospeech, который позволяет инициализировать двигатель TTS - это происходит путем вызова конструктора TextTospeech и предоставления прослушивателя позднее с результатом: < /p>

Код: Выделить всё

mEngine = new TextToSpeech(mContext, listener, ENGINE_GOOGLE_NAME);
< /code>
То, что я хочу достичь, - это иметь одну функцию блокировки, которая вызывает конструктор и возвращает после того, как обратный вызов. Поток конструктор называется, слушатель уволен из поток «основной» приложения.
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

}
Я надеялся, что слушатель также будет вызван в новом потоке, но так как он вызван в основном потоке, а основной поток ждет ( cdl.await () ) Это никогда не называется, и все приложение застряло. Может я делаю что -то в основном не так?


Подробнее здесь: https://stackoverflow.com/questions/793 ... n-java-and
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Android»