什么是确定用户在特定活动中花费时间的最佳方法?
提前谢谢!

最佳答案

我想我应该从这样开始:

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();
}

请注意,由于它使用on pause/onresume,因此如果屏幕关闭、重新定向等,它也将“暂停”计时器。根据您的目的,您可能希望使用其他回调之一,如oncreate()或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();
}

08-06 05:53