【问题标题】:Ways of detecting Windows Phone idle检测 Windows Phone 空闲的方法
【发布时间】:2014-01-26 17:59:35
【问题描述】:

我想在手机处于锁屏模式时执行一些计算,无论应用是在前台还是后台。

我知道为了做到这一点,我需要使用 App 类中的 OnObscured 事件。但是,它仅在应用处于前台时才会启动,而不会在后台启动。

所以,我想知道在应用程序运行后台时是否存在任何检测手机状态的方法。

我曾想过有些事情会很疯狂,但是访问一个在手机处于锁定屏幕时不允许使用的 API 属性,然后捕获异常,然后获取手机是否处于活动状态或睡觉。

我乐于听取新想法。

【问题讨论】:

    标签: windows-phone-7 windows-phone-8 idle-processing


    【解决方案1】:

    我想出了一个简单的事情 - 也许它会帮助你:
    我假设您已禁用空闲检测以在后台运行您的计算。
    那么为什么不创建保存应用程序状态的变量呢?由于您必须首先启动您的应用程序,因此它进入前台,当调用 Obscured 并且 IsLocked = true 时,设置变量。然后你可以随时查看:

    public MainPage()
    {
       InitializeComponent();
    
       App.RootFrame.Obscured+=RootFrame_Obscured;
       App.RootFrame.Unobscured+=RootFrame_Unobscured;
    }
    
    private bool AppIsLocked = false;
    
    private void RootFrame_Unobscured(object sender, EventArgs e)
    {
      if (AppIsLocked) AppIsLocked = false;
    }
    
    private void RootFrame_Obscured(object sender, ObscuredEventArgs e)
    {
       if (e.IsLocked) AppIsLocked = true;
    }
    

    【讨论】:

    • 问题如下:如果我的应用程序正在运行,然后我点击设备的 Windows 按钮,它将进入后台,然后如果我锁定屏幕,我的应用程序不会'检测它。我尝试使用此代码,但由于应用程序在锁定屏幕之前处于后台,因此被隐藏的事件不起作用。
    • 当您点击开始或搜索按钮(或启动器和选择器)时,您的应用程序会进入休眠或墓碑状态,并且不在后台工作(所有线程都已停止)!您必须阅读更多文档msdn.microsoft.com/en-us/library/windowsphone/develop/… ;)
    • 如果您希望某些计划任务或其他解决方案在后台运行,您可能需要后台代理:msdn.microsoft.com/en-us/library/windowsphone/develop/…
    • 我看过 ResourceIntensiveTask,它看起来很有趣。但是它说只执行10分钟。我想知道是否可以定期执行此任务(例如每 30 分钟一次)
    【解决方案2】:

    这是您搜索的 Running a Windows Phone Application under the lock screen 吗? 本文介绍 - 如何避免墓碑。但是在锁屏下你不能做很多工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 2021-08-12
      • 1970-01-01
      • 2012-09-20
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      相关资源
      最近更新 更多