Как сообщить, что деятельность была покрыта областью уведомлений?

Обычно Android вызывает onPause в своей Activity когда он начинает скрываться или скрываться, а затем onStop когда он больше не отображается. В моей игре я приостанавливаю игру в onPause , поэтому пользователь не проигрывает игру, глядя в другое место.

Однако, когда пользователь перетаскивает панель уведомлений, он охватывает мою Activity , но ни onPause ни onStop не вызываются. Это, похоже, не упоминается в документации. Игра исчезает на заднем плане, и никто не смотрит на нее. Есть ли другой способ сказать, что моя Activity была скрыта, когда это происходит, поэтому я могу приостановить игру до того, как пользователь проиграет? Я не могу ничего найти об этом на сайте разработчиков Android.

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

Если это возможно, вы можете отключить панель состояния . В противном случае, я думаю, вам не повезло 🙁

Функция onWindowFocusChanged(boolean hasFocus) Activity должна выполнять требуемую цель. Он вызывается с false когда область уведомлений перетаскивается вниз, и имеет значение true когда область перетаскивается назад. В соответствующей документации на Android указано, что этот метод «является лучшим индикатором того, является ли это действие видимым для пользователя» . В нем также явно указано, что обратный вызов запускается, когда отображается панель уведомлений панели состояния .

Важно отметить, что этот метод также вызывается в других ситуациях. Хорошим примером является отображение AlertDialog . onWindowFocusChanged даже вызывается, когда сама активность показывает AlertDialog . Это может потребовать рассмотрения, в зависимости от того, использует ли ваша игра AlertDialogs или что-то еще, что вызывает изменение фокуса.

В сценарии, подобном описанному в этом вопросе, мы успешно использовали метод onWindowFocesChanged , например, на Nexus 5 с Android 4.4 или планшет Sony Xperia с Android 4.1.

Intereting Posts
Ошибка Android 961 во время установки Подстрока: получить индекс «или» вхождения в строку Любой способ обнаружить нажатия клавиш тома или изменения громкости с помощью службы android? Ошибка телефонной почты. «Метатег метаданных не поддерживается. Пожалуйста, добавьте его при использовании плагина cordova-plugin-whitelist. " Как Auto Increment versionCode при экспорте приложений Android в Eclipse? MPAndroidChart BarChart горизонтальный / вертикальный Улучшить производительность FloatBuffers с помощью Native C / C ++ Как привести индикатор страницы круга на передний план в Android Android – простой способ отображения установленных приложений или учебник? Может ли телефон Android использовать библиотеку Windows DirectX? Сделайте логин с Facebook, используя Facebook SDK 3.0 «Размер растрового изображения превышает 32 бит» в buildDrawingCache на устройствах KitKat Воспроизведение аудио из музыкального видео с использованием Youtube API в Android, когда мое приложение сведено к минимуму Как установить плагин в Android Studio Отменить загрузку в WebView на Android