0

对于试用应用程序,我需要确定应用程序在 Windows Phone 设备上下载或运行的时间。我想将此值与当前日期/时间进行比较,然后在应用程序仍处于试用模式并且已在用户设备上运行超过一定天数时显示一个弹出窗口。检查这个的最好方法是什么?我是否会将应用程序的第一次运行 DateTime 存储在 IsolatedStorage 中并在每次加载应用程序时查询该值?有没有更好的办法?我该怎么做呢?需要注意的是,我目前正在存储应用程序是否已首次加载,以便显示带有一些快速方向/提示的欢迎页面。

4

1 回答 1

0

听起来您想测量应用程序运行的时间(即在前台)。

您需要在每次启动/激活应用程序时记录一个时间戳,并在应用程序关闭/停用时记录另一个时间戳。您可以从这两个时间戳计算经过的时间,并将此值存储在IsolatedStorage. 如果某个值已存在于 中IsolatedStorage,您会将新的经过时间添加到现有值中。然后您可以在启动时检查存储的值,并决定如果它超过您的阈值该怎么办。

这是我用来记录时间戳的(未经测试的)代码App.xaml.cs

DateTime startTimestamp;
IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;
const int MAX_TRIAL_USAGE = 5;

void Start()
{
    startTimestamp = DateTime.Now;

    if (settings.Contains("ElapsedTime"))
    {
        TimeSpan elapsed = (TimeSpan)settings["ElapsedTime"];

        if (elapsed > TimeSpan.FromDays(MAX_TRIAL_USAGE))
        {
            // Trial has expired, do something
        }
    }
}

void Stop()
{
    TimeSpan elapsed = DateTime.Now - startTimestamp;

    if (!settings.Contains("ElapsedTime"))
    {
        settings.Add("ElapsedTime", elapsed);
    }
    else
    {
        elapsed += (TimeSpan)settings["ElapsedTime"];
        settings["ElapsedTime"] = elapsed;
    }

    settings.Save();
}

最后,将这些方法连接到应用程序生命周期事件:

private void Application_Launching(object sender, LaunchingEventArgs e)
{
    Start();
}

private void Application_Activated(object sender, ActivatedEventArgs e)
{
    Start();
}

private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{
    Stop();
}

private void Application_Closing(object sender, ClosingEventArgs e)
{
    Stop();
}
于 2013-10-10T05:28:04.420 回答