【问题标题】:Xamarin Forms Detect if Screen Active and/or Device LockedXamarin 表单检测屏幕是否处于活动状态和/或设备锁定
【发布时间】:2019-04-14 12:18:54
【问题描述】:

我有一个产生背景音频的 Xamarin Forms 应用程序,因此该应用程序可以在设备处于锁定模式和/或屏幕未处于活动状态(屏幕睡眠)时运行。

当 Xamarin Forms MainPage(一个 ContentPage)不可见且处于活动状态时,我需要阻止屏幕更新。换句话说,我需要检测屏幕是否被禁用(在睡眠模式下),设备是否被锁定,并且最好是 MainPage 当前不活动且不可见。

使用 Xamarin Forms,我如何检测屏幕是否处于非活动状态和/或设备是否处于锁定模式?


其他信息

  • 我尝试使用 Xamarin.Essentials 并检查 ScreenLock.IsActive 属性。这不起作用,因为即使设备处于锁定模式,IsActive 总是 false。在 iOS 设备 (iPhone) 上测试。
  • 我需要阻止屏幕更新的原因是因为我正在使用 CocosSharp 并且我会定期在屏幕上放置 CCParticle 动画。当屏幕不活动时,可以继续添加新的 CCParticle 动画,但现有的动画不会运行到它们设定的持续时间,因此永远不会“过期”。结果是(隐藏的)屏幕上不断增加的 CCParticle 动画数量不断消耗资源。

【问题讨论】:

    标签: ios xamarin.forms cocossharp


    【解决方案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 文档有时似乎不是很有用。我用谷歌搜索了这个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    相关资源
    最近更新 更多