0

ユーザーがアプリケーションに費やした合計時間を分離ストレージに保存する必要があります。

実行開始時刻と実行終了時刻を知っておくべきだと思います。

何かいい方法があればお願いします..

ありがとう..

4

2 に答える 2

4

App.xaml.cs ファイルには、実行モデルに直接関連するいくつかのメソッドがあります。

  • アプリケーション_起動中
  • Application_Activated
  • Application_Deactivated
  • Application_Closing

このメソッドをフックして、実際には非常に簡単な必要なロジックを提供できます。

  • Application_Launching - 初期化しspentTimeます。
  • Application_Activated - から復元spentTimeStateます。
  • 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++;
}

次に、AnatoliG の例に従って、さまざまなイベントに費やす時間を節約します。

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 に答える