0

我需要将用户在应用程序上花费的总时间保存到一个独立的存储中。

我想我应该知道开始和结束执行的时间。

如果有任何方法可以做到这一点,请..

谢谢..

4

2 回答 2

4

App.xaml.cs 文件中有几个与执行模型直接相关的方法:

  • 应用程序_启动
  • 应用程序_已激活
  • 应用程序_停用
  • Application_Closing

您可以挂钩此方法并提供所需的逻辑,这实际上非常简单:

  • Application_Launching - 初始化spentTime
  • spentTimeApplication_Activated -从State;恢复
  • Application_Deactivated - 重新计算时间并存储以便State能够进一步得到它;
  • Application_Closing - 重新计算并存储spentTime独立存储


了解 WP 执行模型的一些有用链接:

于 2012-06-26T13:46:39.757 回答
1

要添加到 AnatoliiG 的答案,您可以使用DispaterTimer类来计算时间。请小心使用 DateTime.Now 来计算用户使用该应用程序的时间,因为在一年中有时这会给您带来错误的值。

private _DispatcherTimer _timer;
private int _spentTime;

public Application()
{
    _timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(1) };
    _timer.Tick += TimerTick;
}

TimerTick(object s, EventArgs args)
{
    _spentTime++;
}

然后按照 AnatoliiG 示例来节省花费在不同事件上的时间。

private void Application_Launching(object sender, LaunchingEventArgs e)
{
    _timer.Start();
    // Should probably have some logic to determine if they tombstoned the app
    // and did not actually leave the app, if so then save that time
}

private void Application_Activated(object sender, ActivatedEventArgs e)
{
    _timer.Start();
    // Restore _spentTime
}

private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
    _timer.Stop();
    // Store _spentTime
}

private void Application_Closing(object sender, ClosingEventArgs e)
{
    // Save time, they're done!
}
于 2012-06-26T14:39:41.610 回答