Почему UtteranceProgressListener не является интерфейсом?

Я играю с функциями Android TTS, и у класса TextToSpeech есть этот метод для установки слушателя, который получает уведомление, когда TextToSpeech заканчивает играть:

public int setOnUtteranceCompletedListener(TextToSpeech.OnUtteranceCompletedListener listener)

НоOnUtteranceCompletedListener определяется какpublic abstract class, Как мойMainActivity уже расширяет активность, она не может расширятьOnUtteranceCompletedListener также. Я мог бы использовать более старый метод сOnUtteranceCompletedListener, но это не рекомендуется:

public int setOnUtteranceCompletedListener (TextToSpeech.OnUtteranceCompletedListener listener)`

ПочемуOnUtteranceCompletedListener не определяется какpublic static interface? Я думаю написать свою собственнуюUtteranceProgressListenerImpl, который затем просто позвонитMainActivitysonDone метод. Это правильный путь или есть лучшая / более чистая альтернатива?

private class UtteranceProgressListenerImpl extends UtteranceProgressListener {

    private MainActivity mainActivity;

    UtteranceProgressListenerImpl(MainActivity mA) {
        mainActivity = mA;
    }

    @Override
    public void onDone(String utteranceId) {
        mainActivity.onDone(utteranceId);
    }

    @Override
    public void onError(String utteranceId) { /* empty */ }

    @Override
    public void onStart(String utteranceId) { /* empty */ }


}

Ответы на вопрос(1)

Ваш ответ на вопрос