Вы не можете зависеть от того, не возвращаетесь ли вы от ожидания до уведомления: «возможны прерывания и ложные пробуждения». В общем случае вы должны завернуть вызов ожидания в цикле, пока поток должен продолжать ожидание.
Вы можете попробовать использовать «перевернутый» компонент Bottom Sheet
и заполнить его пользовательским ListView в качестве меню. Я нашел этот репозиторий на github для создания «верхнего листа», надеюсь, это поможет!