如何计算用户在WP7 silverlight应用程序上花费的总时间?

时间:2012-06-26 13:42:11

标签: c# silverlight windows-phone-7

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

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

如果有任何办法,请...

谢谢..

2 个答案:

答案 0 :(得分:4)

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

  • Application_Launching
  • Application_Activated
  • Application_Deactivated
  • Application_Closing

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

  • Application_Launching - 初始化spentTime;
  • Application_Activated - 从State恢复spentTime;
  • Application_Deactivated - 重新计算时间并存储到State以便更进一步;
  • Application_Closing - 重新计算并将spentTime存储到Isolated Storage


一些有用的链接,用于理解WP执行模型:

答案 1 :(得分: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!
}