我正在开发一个基于UWP的自助服务终端应用,我希望每个视图在x时间过后返回主页。实现这一目标的最佳方法是什么?我正在考虑让每个页面启动一个不活动计数器,一旦计数器运行回家。思考?
答案 0 :(得分:1)
我正在考虑让每个页面启动一个不活动计数器,一旦计数器运行回家
我认为这是正确的做法。
使用DispatcherTimer
作为计数器。
要检查不活动状态,您可以在应用的Window.Current.CoreWindow
使用Window.Current.CoreWindow.PointerPressed
,PointerMoved
和PointerReleased
进行触摸和鼠标输入。
键盘输入:KeyUp
和KeyDown
(软键)和CharacterReceived
(适用于通过和弦和文字建议生成的字符)。
DispatcherTimer dispatcherTimer;
public NewPage()
{
dispatcherTimer = new DispatcherTimer();
dispatcherTimer.Tick += dispatcherTimer_Tick;
dispatcherTimer.Interval = new TimeSpan(0, 0, 10);
dispatcherTimer.Start();
CheckIdle();
}
public void dispatcherTimer_Tick(object sender, object e)
{
dispatcherTimer.Tick -= dispatcherTimer_Tick;
dispatcherTimer.Stop();
Frame.Navigate(typeof(MainPage));
}
private void CheckIdle()
{
//Calling DispatcherTimer.Start() will reset the timer interval
Window.Current.CoreWindow.PointerMoved += (s, e) => dispatcherTimer.Start();
Window.Current.CoreWindow.PointerPressed += (s, e) => dispatcherTimer.Start();
Window.Current.CoreWindow.PointerReleased += (s, e) => dispatcherTimer.Start();
Window.Current.CoreWindow.PointerWheelChanged += (s, e) => dispatcherTimer.Start();
Window.Current.CoreWindow.KeyDown += (s, e) => dispatcherTimer.Start();
Window.Current.CoreWindow.KeyUp += (s, e) => dispatcherTimer.Start();
Window.Current.CoreWindow.CharacterReceived += (s, e) => dispatcherTimer.Start();
}