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事件运行,而应用程序是在锁屏下,或以其他方式不活动?
Windows Phone对后台工作有严格的限制。也许你需要许可才能在锁屏状态下工作?
http://developer.nokia.com/community/wiki/Run_Windows_Phone_application_under_lock_screen但它只在锁屏下保持应用程序活动,而不是当用户按下窗口或关闭应用程序时。