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

时间:2014-03-25 02:30:18

标签: c# windows-phone-7 c#-4.0 windows-phone-8 dispatchertimer

我正在研究Windows Phone的计时器应用程序,我试图让它如果计时器上的剩余时间为零,无论应用程序是否处于活动状态,都会播放来自BackgroundAudioPlayer的声音,不活跃或处于锁定状态。

目前,我的问题是当应用程序未处于活动状态时,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事件?

1 个答案:

答案 0 :(得分:0)

Windows Phone对后台工作有严格的限制。您是否需要获得在锁屏下工作的许可?

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

但它仅在锁屏下保持应用程序处于活动状态,但在用户按下Windows或关闭应用程序时则不会。