ユーザーが特定のアクティビティに費やす時間を計る最良の方法は何でしょうか?
前もって感謝します!
アクティビティonResume()
とonPause()
メソッドを維持しながら時間を開始/停止します。また、SCREEN_OFF / SCREEN_ON放送受信機をインストールして、画面がいつオン/オフになるかを把握し、そこでもタイミングを有効/無効にします。
私は次のようなものから始めると思います:
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()や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();
}