WP7/8在后台/锁屏中调用DispatcherTimer tick事件

本文关键字:调用 DispatcherTimer 事件 tick 后台 WP7 | 更新日期: 2023-09-27 17:52:46

我正在为Windows Phone开发一个计时器应用程序,我正在努力使它如此,如果计时器上的剩余时间为零,来自BackgroundAudioPlayer的声音将播放,无论应用程序是否处于活动状态,非活动状态或处于锁定状态。

目前,我的问题是,当应用程序不活动时,tick事件实际上不做任何事情。一旦用户回到应用程序,tick事件就会运行到它们本来应该运行的点,但声音效果(或其他任何东西)不会真正播放,除非应用程序处于活动状态,或切换到活动状态。

我的Page.xaml.cs:

PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;

相关代码为:

    void dispatcherTimer_Tick(object sender, EventArgs e)
    {
        var remaining = this.EndTime - DateTime.Now;
        int remainingSeconds = (int)remaining.TotalSeconds;
        this.timeSpan.Value = TimeSpan.FromSeconds(remainingSeconds);
        if (remaining.TotalSeconds <= 0)
        {
            this.dispatcherTimer.Stop();
            button1.Visibility = Visibility.Collapsed;
            button6.Visibility = Visibility.Visible;
            this.EndTime = DateTime.MinValue;
            this.timeSpan.Value = TimeSpan.FromSeconds(0);
            BackgroundAudioPlayer.Instance.Play();
        }
    }

我怎么做才能使tick事件运行,而应用程序是在锁屏下,或以其他方式不活动?

WP7/8在后台/锁屏中调用DispatcherTimer tick事件

Windows Phone对后台工作有严格的限制。也许你需要许可才能在锁屏状态下工作?

http://developer.nokia.com/community/wiki/Run_Windows_Phone_application_under_lock_screen

但它只在锁屏下保持应用程序活动,而不是当用户按下窗口或关闭应用程序时。