我正在开发一个Windows Phone应用程序,但我知道当屏幕上显示某个页面并且手机接到电话时,会发生哪个事件? 我如何订阅该活动?
我尝试检查应用程序停用事件和RunningInBackground事件,但它没有被触发。 它的愚蠢问题,但在互联网上找不到任何可以理解的东西。 是页面级别还是应用程序级别?
答案 0 :(得分:2)
您可以使用Windows Phone Shell覆盖应用程序窗口时出现的Obscure和Unobscured事件。
这是什么意思?当您在Windows手机上接到电话时,您的应用程序窗口会被"来电视图"覆盖。 当手机中的闹钟响起时,会出现覆盖屏幕30%的视图,部分覆盖您的应用视图。
这些视图会触发您应用程序上的模糊事件。
来自MSDN:
没有迹象表明哪一块或多块壳铬 正在模糊应用程序。应用程序将获得Obscured 如果已经到达前景后立即发生事件 覆盖屏幕的一些UI。但是,当事件没有提出 应用程序在使用过程中被导航。
您可以在此处获取更多信息:
最后,如何将它们与只能在设备上运行的simple example一起使用:
<TextBlock Name="txtObs" Grid.Column="0" Margin="0,10,0,0" Grid.Row="2"/>
<TextBlock Name="txtUnobs" Grid.Column="0" Margin="0,80,0,0" Grid.Row="2"/>
在构造函数中添加:
PhoneApplicationFrame rootFrame = (Application.Current as App).RootFrame;
rootFrame.Obscured += OnObscured;
rootFrame.Unobscured += Unobscured;
然后在它之外:
void OnObscured(Object sender, ObscuredEventArgs e)
{
txtObs.Text = "Obscured at " + DateTime.Now.ToString();
}
void Unobscured(Object sender, EventArgs e)
{
txtUnobs.Text = "Unobscured at " + DateTime.Now.ToString();
}
要记住的一件事是,为了在锁定模式下运行您的应用程序,需要禁用ApplicationIdleDetectionMode
:
PhoneApplicationService.Current.ApplicationIdleDetectionMode = IdleDetectionMode.Disabled;
尝试一下!