onPause () проблема: дифференцировать "другой экран приложения открыт" VS "приложение переходит в фоновый режим" - PullRequest
0 голосов
/ 20 октября 2019

Прежде всего, здесь есть связанные посты в stackoverflow, но ни один из них не дает решения этой проблемы, поэтому я решил начать новый, более сфокусированный на этой конкретной проблеме.

Яразработка игры с фоновой музыкой. Музыка должна быть остановлена, когда пользователь блокирует устройство или нажимает кнопку «Домой» или вообще переходит на задний план.

Поэтому я добавил функцию pause () для музыки в методах onPause каждого действия ().

Проблема в том, что когда пользователь открывает другое действие, музыка приостанавливается. Я попытался возобновить музыку в onResume нового действия, но музыка останавливается на полсекунды, так что это не очень хорошее решение.

Как я могу различить, когда приложение вошло в фоновый режим и когдапользователь открыл новый экран приложения?

@Override
protected void onResume() {
    super.onResume();
    if (MusicManager.getInstance().musicOn())
        MusicManager.getInstance().start();
}

@Override
protected void onPause() {
    super.onPause();
    if (MusicManager.getInstance().musicOn())
        MusicManager.getInstance().pause();
}
...