Как программно отслеживать время использования приложения в Android?
Я хочу знать, сколько времени пользователь использует мое приложение. Поэтому, когда он открывает мое приложение, я хочу знать время, а когда он закрывает приложение, я хочу знать время. Когда пользователь закроет приложение, я хочу отправить время использования на сервер. Как я могу отслеживать время использования в Android?
1 ответ
Я бы поставил данные ложи onResume
а также onPause
методы. и на каждый onPause добавить время использования к SharedPrefrences
или какую-то базу данных и о требованиях при создании или при включении интернета я бы отправлял статистику использования.
Таким образом, вы можете отслеживать каждое использование деятельности.
Не уверен, существует ли какой-либо из методов box.
Способ, о котором я упоминал ниже, - это очень эффективный способ узнать общее время, затраченное пользователем на приложение в Android. На самом деле я также использую этот подход, чтобы вознаграждать своих пользователей за потраченное время. Прежде всего, вам нужен пользовательский ActivityLifecycleCallbacks, который отвечает за срабатывание при запуске приложения и остановке. Вам нужно просто зарегистрировать ActivityLifecycleCallbacks в экземпляре вашего приложения. Это также будет заботиться о том, приостанавливает ли какой-либо пользователь приложение, поэтому вам не нужно об этом думать. Пользовательский класс ActivityLifecycleCallbacks -
public class ApplicationTimeSpentTracker implements Application.ActivityLifecycleCallbacks {
private int activityReferences = 0;
private boolean isActivityChangingConfigurations = false;
private long startingTime;
private long stopTime;
/**startingTime is the UNIX timestamp (though I increased readability by converting into millisecond to second) your app is being foregrounded to the user and stopTime is when it is being backgrounded (Paused)*/
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
}
@Override
public void onActivityStarted(Activity activity) {
if (++activityReferences == 1 && !isActivityChangingConfigurations) {
// App enters foreground
startingTime=System.currentTimeMillis()/1000; //This is the starting time when the app began to start
}
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
isActivityChangingConfigurations = activity.isChangingConfigurations();
if (--activityReferences == 0 && !isActivityChangingConfigurations) {
// App enters background
stopTime = System.currentTimeMillis() / 1000;//This is the ending time when the app is stopped
long totalSpentTime= stopTime-startTime; //This is the total spent time of the app in foreground. Here you can post the data of total spending time to the server.
}
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
}
Наконец, вам нужно зарегистрировать обратный вызов для экземпляра вашего приложения в MainActivity следующим образом:
activity.getApplication().registerActivityLifecycleCallbacks(new ApplicationTimeSpentTracker());
Вот мой пост, если вам нужны подробности