如何计算用户在活动中花费的时间

时间:2012-12-21 20:07:35

标签: android time android-activity

什么是计算用户在特定活动中花费多长时间的最佳方式?

提前致谢!

2 个答案:

答案 0 :(得分:4)

开始/停止在活动的onResume()onPause()方法中保留时间。还要安装一个SCREEN_OFF / SCREEN_ON广播接收器,以便您知道屏幕何时开启和关闭,并启用/禁用您的定时。

答案 1 :(得分:2)

我想我会从这样的事情开始:

private static long mTotalTime;
private long mStartTime;

@Override
public void onPause() {
    super.onPause();
    mTotalTime += System.currentTimeMillis() - mStartTime;
}

@Override
public void onResume() {
    super.onResume();
    mStartTime = System.currentTimeMillis();
}

请注意,因为它正在使用onPause / onResume,如果屏幕关闭,它也会“暂停”计时器,如果它重新定位等等。根据你的目的,你可能想要使用其他一个回调,比如onCreate ()或onDestroy(),但请注意,当从现有活动启动新活动时,不会调用onDestroy()。

您可能还希望将mTotalTime保存到SharedPreferences,以便即使应用程序关闭也会保留它。也许是这样的:

private long mStartTime;

@Override
public void onPause() {
    super.onPause();
    int totalTime = getPreferences(0).getInt("TotalTime",0);
    getPreferences(0).edit().putInt("TotalTime", totalTime + System.currentTimeMillis() - mStartTime)
}

@Override
public void onResume() {
    super.onResume();
    mStartTime = System.currentTimeMillis();
}