Inicializando o objeto TextToSpeech em um thread de trabalho

Por anos (literalmente), meu aplicativo sofreu problemas ao executar mal o mecanismo de texto para fala, em particular o tempo de inicialização ao chamar:

tts = new TextToSpeech(context, myOnInitListener);

A descrição acima pode causar um atraso na interface do usuário e, se você procurar por 'Inicialização de texto em fala lenta' no SO, encontrará muitas postagens. As vozes IVONA de alta qualidade incorporadas costumavam ser as piores culpadas, mas asMecanismo TTS do Google já recebeu o prêmio.

A atualização mais recente do APK causa um grande atraso na inicialização - não é necessário código para testar isso, você pode acessar as configurações de texto para fala do Android e tentar alternar entre os mecanismos disponíveis, enquanto pressiona 'ouvir uma amostra', o atraso é demonstrado ' agradável'.

Para tentar combater isso, implementei o seguinte:

private volatile TextToSpeech tts;

AsyncTask.execute(new Runnable() {
    @Override
    public void run() {
        tts = new TextToSpeech(context, volatileOnInitListener);
    }
});

Isso curou completamente o atraso na inicialização, mas temo que possa haver efeitos colaterais sobre isso que não considerei? Alguém pode pensar em alguma?

Também estou intrigado, pois acreditava que oConstrutor TextToSpeech era assíncrono e, portanto, mover esse construtor para um thread de trabalho não deve fazer diferença? Se essa implementação é o caminho a seguir, por que o Google não a implementa em seusTextToSpeechSettings?

Espero que alguém possa esclarecer o acima. Desde já, obrigado.

Editar - Quando eu disse que o 'Construtor era assíncrono', estava realmente me referindo ao processo de inicialização do mecanismo iniciado e à eventual chamada para onInit

questionAnswers(1)

yourAnswerToTheQuestion