我正在构建一个Windows 8.1 Universal应用程序,具体而言,我正在开发Windows Phone端。该应用程序是使用MVVM模式构建的RT应用程序,我正在使用MVVM Light。
该应用程序适用于金融机构并公开付款信息。因此,如果在2分钟后没有活动,则需要将用户从应用程序中注销。
我已经高低搜索了解决这个问题的方法。唯一真正有效的是在视图中设置手势,并使用DispatchTimer,如果没有检测到手势,它会在2分钟后过期并重定向到应用程序锁定屏幕(不是内置的Windows屏幕)。手势重置计时器。以下是手势设置的一些示例代码:
public MainPage()
{
this.InitializeComponent();
//Register the gestures, for the app timeout
this.PointerPressed += MainPage_PointerPressed;
this.PointerMoved += MainPage_PointerMoved;
this.PointerReleased += MainPage_PointerReleased;
gr.CrossSliding += Gr_CrossSliding;
gr.Dragging += Gr_Dragging;
gr.Holding += Gr_Holding;
gr.ManipulationCompleted += Gr_ManipulationCompleted;
gr.ManipulationInertiaStarting += Gr_ManipulationInertiaStarting;
gr.ManipulationStarted += Gr_ManipulationStarted;
gr.ManipulationUpdated += Gr_ManipulationUpdated;
gr.RightTapped += Gr_RightTapped;
gr.Tapped += Gr_Tapped;
gr.GestureSettings = Windows.UI.Input.GestureSettings.ManipulationRotate | Windows.UI.Input.GestureSettings.ManipulationTranslateX | Windows.UI.Input.GestureSettings.ManipulationTranslateY |
Windows.UI.Input.GestureSettings.ManipulationScale | Windows.UI.Input.GestureSettings.ManipulationRotateInertia | Windows.UI.Input.GestureSettings.ManipulationScaleInertia |
Windows.UI.Input.GestureSettings.ManipulationTranslateInertia | Windows.UI.Input.GestureSettings.Tap;
InitializeTimer();
}
有一些方法可以在页面上接收手势输入,如下所示:
private void Gr_Tapped(Windows.UI.Input.GestureRecognizer sender, Windows.UI.Input.TappedEventArgs args)
{
ResetTimer();
}
这是我的计时器代码:
private DispatcherTimer _timer2 { get; set; }
int ticks = 0;
private void InitializeTimer()
{
_timer2 = new DispatcherTimer();
_timer2.Tick += timer2_Tick;
_timer2.Interval = new TimeSpan(00, 0, 1);
bool enabled = _timer2.IsEnabled;
_timer2.Start();
}
void timer2_Tick(object sender, object e)
{
ticks++;
if (ticks >= 120)
{
Timeout();
}
}
private void Timeout()
{
_timer2.Stop();
_timer2 = null;
Frame.Navigate(typeof(LockView));
}
private void ResetTimer()
{
_timer2.Stop();
_timer2.Start();
ticks = 0;
}
这个解决方案远非完美。如果我找不到更好的产品,我将不得不使用它,但它有4个主要问题;
有谁知道更好的方法来实现这一目标?当然,这是一个更优雅的解决方案,可能是更高级别的东西,而不是试图抓住每个按钮和按钮的最后按钮。
此外,如果应用程序可以检测它是在前台还是后台运行,并且如果用户导航离开应用程序然后稍后再返回到锁定屏幕,则会自动导航到锁定屏幕。
提前感谢任何建议......