Xamarin Forms определяет, активен ли экран и / или заблокировано ли устройство

У меня есть приложение Формы Xamarin, которое производит фоновый звук, и, таким образом, приложение может работать, пока устройство находится в режиме блокировки и / или когда экран не активен (спящий режим).

Мне нужно предотвратить обновления экрана, пока Xamarin Forms MainPage (ContentPage) не отображается и не активен. Другими словами, мне нужно определить, отключен ли экран (в спящем режиме), если устройство заблокировано, а также предпочтительно, когда MainPage в настоящее время не активен и не виден.

Как с помощью Xamarin Forms определить, не активен ли экран и / или находится ли устройство в режиме блокировки?


Дополнительная информация

  • Я пробовал использовать Xamarin.Essentials и проверять свойство ScreenLock.IsActive. Это не сработало, поскольку IsActive всегда был ложный, даже когда устройство находилось в режиме блокировки. Проверено на устройстве iOS (iPhone).
  • Причина, по которой мне нужно предотвращать обновления экрана, заключается в том, что я использую CocosSharp и периодически размещаю на экране анимацию CCParticle. Когда экран неактивен, можно продолжать добавлять новые анимации CCParticle, но существующие не работают до установленной продолжительности и, следовательно, никогда не «истекают». В результате постоянно увеличивается количество анимаций CCParticle на (скрытом) экране, которые постоянно потребляют ресурсы.
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
2 475
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В вашем App.xaml.cs у вас есть следующие методы:

protected override void OnStart()
{
    // Handle when your app starts
}

protected override void OnSleep()
{
    // Handle when your app sleeps
}

protected override void OnResume()
{
    // Handle when your app resumes
}

Похоже, вы хотите, чтобы что-то происходило, когда приложение запускается / возобновляется, но не когда оно спит (когда экран неактивен или приложение находится в фоновом режиме).

В общем, это то, что мне было нужно. Это было все время прямо передо мной. Жаль, что документация Xamarin временами кажется не очень полезной. Я погуглил, черт возьми, из этого.

robbpriestley 26.11.2018 21:11

Другие вопросы по теме